Hello World
$ emacs test.coffee
hello = ->
console.log(“Hello World!”)
hello()
コンパイル coffee -> js。 test.jsというJsファイルが生成される
$ coffee -c test.coffee
生成したJsの実行
$ node test.js
Hello World!
生成されたJsの中身
(function() {
var hello;
hello = function() {
return console.log("Hello World!");
};
hello();
}).call(this);
コンパイルせずに直接実行
$ coffee test.coffee
Hello World!
coffee <ファイル名> と入力するのが面倒なので、zshのaliasを設定する
emacs $HOME/.zshrc
alias -s coffee=coffee
source $HOME/.zshrc
今後は、ファイル名を入力するだけで実行される
$ ./test.coffee
Hello World!
オプション
- -c (–compile) .coffee から .js にコンパイルします。
- -b (–bare) 外側の (function(){ … }).call(this); を取り除きます。
- -w (–watch) ソースファイルを監視して、ファイルが変更されるたびにコンパイルを実行します。
構文
- var での変数宣言が不要
- 関数の定義(function)の代わりに -> を使う
- 式の終わりや行末にセミコロンを必ずしも置かなくてもよい
- インデントでブロックを表現する
- 引数を取る関数の場合、() を省略して書くこともできる
コメントアウト
# 1行コメント
# コンパイル時には消される
###
複数行コメント
コンパイル時にも残る
###
関数
-> を使って定義します。引数を取る場合は -> を (var1, var2) -> のようにして引数を並べます。
関数内の最後の値が自動的にreturnされます。
square = (x) -> x * x
コンパイル結果 ↓
square = function(x) {
return x * x;
};
例) 引数がないので、()を省略
hello = -> “Hello World!”
hello()
if文
複数行の場合
fib = (n) -> if n < 2 n else fib(n-1) + fib(n-2)
一行の場合
fib = (n) -> if n < 2 then n else fib(n-1) + fib(n-2)
変数展開
” “ でくくった文字列の中では #{変数名} で変数の値を埋め込むことができます。
name = “Nao”
console.log “My name is #{name}!”
演算子
|Coffee | Js |
|:------|:---|
| is | ===|
| isnt | !==|
| not | ! |
| and | && |
| or | || |
参考サイト
以下のサイトを参考にさせていただきました。ありがとうございます!