RSS

カテゴリー別アーカイブ: CoffeeScript

CoffeeScript: switch 文

switch 文は JavaScript に似ているが、case でなく when を使用する。また、default でなく else を使用する。

#!/usr/bin/coffee

# switch 文のサンプル

f = (a) ->
        switch(a)
                when 1
                        console.log(a+1)
                when 5
                        console.log(a)
                else
                        console.log('else')

f(0)
f(1)
f(5)
 
コメントする

投稿者: : 2016/08/29 投稿先 CoffeeScript

 

CoffeeScript: 可変数変数を持つ関数

可変数変数を持つ関数を定義できる。

#!/usr/bin/coffee

# 複数変数への代入
var1 = var2 = null

# 可変数変数を持つ関数の定義
splats = (x, y...) ->
        var1 = x
        var2 = y

# 関数の呼び出し
splats(1, 2, 3, 4)

# 結果の表示
console.log(var1)
console.log(var2)
 
コメントする

投稿者: : 2016/08/29 投稿先 CoffeeScript

 

CoffeeScript: オブジェクト

オブジェクト定義のサンプル。オブジェクトはインスタンス化済みのクラスのようなもの。

#!/usr/bin/coffee

# オブジェクトの作成

obj10 =
    title: 'Idolmaster'
    url: 'http://youtube.com/xlxsooo'
    tag: 'IMAS'

console.log(obj10.tag)

上の CoffeeScript ソースは次のようにコンパイルされる(JavaScript)。

// Generated by CoffeeScript 1.9.3
var obj10;

obj10 = {
  title: 'Idolmaster',
  url: 'http://youtube.com/xlxsooo',
  tag: 'IMAS'
};

console.log(obj10.tag);
 
コメントする

投稿者: : 2016/08/29 投稿先 CoffeeScript

 

CoffeeScript: 後置 for 文

for 文により関数を呼び出す例。

#!/usr/bin/coffee

# print 関数の定義
print = (s) -> console.log(s)

# 後置 for 文のサンプル
print x for x in ['aa', 'bb', 'cccc', 'ddd', 'e']
print x for x in ['aa', 'bb', 'cccc', 'ddd', 'e'] when x.length > 2

実行結果

aa
bb
cccc
ddd
e
cccc
ddd
 
コメントする

投稿者: : 2016/08/29 投稿先 CoffeeScript

 

CoffeeScript: PUG (旧 Jade) の使用

Pug (旧 Jade) を使用する例。npm で pug をインストールしておく必要がある。

#!/usr/bin/coffee

# jade = require 'jade'
jade = require 'pug'
fs = require 'fs'

# print 関数の定義
print = (s) ->console.log(s)

# test.jade ファイル(pugソース)を読む。
fs.readFile('test.jade', 'utf-8', (err, htm)->
    if not err
        # レンダリング
        fn = jade.compile(htm)
        print fn({title:'test of pug'})
    else
        print err.message
)

pug のソース (test.jade)

doctype html
html
        head
                title #{title}
        body
                h1 #{title}
                hr
                div ...

test.jade のレンダリング結果

<!DOCTYPE html><html><head><title>test of jade
</title></head><body><h1>test of jade</h1><hr>
...

</body> </html>

 
コメントする

投稿者: : 2016/08/29 投稿先 CoffeeScript

 

CoffeeScript: 変数が定義されているかのチェック

変数の後に ? を付けると変数が存在していて null でないことの確認を簡単に行える。

#!/usr/bin/coffee

# 変数が存在するかどうかの確認。?を付ける。

console.info("exists") if name?
console.info("Not exists") if ! name?

このサンプルは以下のように JavaScript に変換される。

// Generated by CoffeeScript 1.9.3
if (typeof name !== "undefined" && name !== null) {
  console.info("exists");
}

if (typeof name === "undefined" || name === null) {
  console.info("Not exists");
}
 
コメントする

投稿者: : 2016/08/29 投稿先 CoffeeScript

 

CoffeeScript: 文字列に変数を埋め込む

文字列内で #{…} は埋め込み変数として認識される。

#!/usr/bin/coffee

# 文字列に変数を埋め込むサンプル

you = '(^_^)'

console.log("your face #{you}")
 
コメントする

投稿者: : 2016/08/29 投稿先 CoffeeScript