2013年9月15日日曜日

[coffeescript]soak operator(nullを安全に扱えるやつ)

soak operatorというものを使うとnullを安全に扱えるようになる。

hoge = null

console.log hoge
# 値が代入されているかチェック(nullの場合はfalse)
console.log hoge?
# 値が代入されていない場合の初期値を返す
console.log hoge ? 'nullだよ'

# 初期値を代入(?=で値が未設定時の初期値を代入できる)
hoge ?= '初期値'
console.log hoge

# 値が設定されている場合は変わらない
hoge ?= '値は変わらない'
console.log hoge

JavaScriptへの変換結果

JavaScriptへ変換した結果。if文でうまいことnullが考慮されている。
// Generated by CoffeeScript 1.6.3
(function() {
  var hoge;

  hoge = null;

  console.log(hoge);

  console.log(hoge != null);

  console.log(hoge != null ? hoge : 'nullだよ');

  if (hoge == null) {
    hoge = '初期値';
  }

  console.log(hoge);

  if (hoge == null) {
    hoge = '値は変わらない';
  }

  console.log(hoge);

}).call(this);