05 07 2011 javascript coffeescript Tweet
ついでにnode.jsのアップデートをしつつ、npmを入れた。/usr/localのownerを変更するのは気持ち悪いが、自分しか使わないのでまぁいいかなと(参考)。
tar xvfz node-v0.4.9.tar.gz cd node-v0.4.9/ ./configure make sudo make install sudo chown -R $USER /usr/local curl http://npmjs.org/install.sh | sh npm install -g coffee-script
さて、CoffeeScriptとはjavascriptにコンパイルできる小さな言語です。文法がPythonっぽいのでとっつきやすそう。
関数適用に括弧がいらない
引数が一つのときだけ?
coffee> add = (x,y) -> x+y [Function] coffee> add(1,2) 3 coffee> add 1 2 Error: In repl, Parse error on line 1: Unexpected 'NUMBER' at Object.parseError (/usr/local/lib/node_modules/coffee-script/lib/parser.js:472:11) at Object.parse (/usr/local/lib/node_modules/coffee-script/lib/parser.js:548:22) at /usr/local/lib/node_modules/coffee-script/lib/coffee-script.js:29:22 at Object.eval (/usr/local/lib/node_modules/coffee-script/lib/coffee-script.js:88:10) at Interface.<anonymous> (/usr/local/lib/node_modules/coffee-script/lib/repl.js:39:28) at Interface.emit (events.js:64:17) at Interface._onLine (readline.js:153:10) at Interface._line (readline.js:408:8) at Interface._ttyWrite (readline.js:585:14) at ReadStream.<anonymous> (readline.js:73:12) coffee> add1 = (x) -> x+1 [Function] coffee> add1 3 4
内包標記が使える
coffee> numbers = [1,2,3,4,5] [ 1, 2, 3, 4, 5 ] coffee> odds = (n for n in numbers by 2) [ 1, 3, 5 ]
なかなか楽しげ
ベターJavaScript!? CoffeeScriptが注目されるワケ
Ashkenas氏によれば、JavaScriptからCoffeeScriptに移植したあるライブラリは、元の1/3のコード量になったものがあるといいます。また、JavaScriptにある仕様上の欠陥や落とし穴の多くはCoffeeScriptによって避けられるとしています(欠点を知り、それらを避ける方法をまとめた「JavaScript: The Good Parts――「良いパーツ」によるベストプラクティス」という書籍もありますね)。
JavaScriptにある仕様上の欠陥や落とし穴を知っておくということも大切ですね。というわけで、次回の読書会は7/30に静岡でやる予定になっています。