CoffeeScriptを書いてみたよ その4

今回で最後、CoffeeScriptの練習。CoffeeScript書きすぎて、JavaScriptが書けなくなってきたのはいいことなのか、悪いことなのか……

bind

# bind? ( => )
# amachang先生の http://thinkit.co.jp/free/article/0702/15/4/ を参考にしたけど
# 微妙にわかってないような……
class aaa
  constructor: (@name) ->
  echo: -> #
    console.log @name
    return
class bbb
  constructor: (@name) ->
  echo: => #
    console.log @name
    return

setTimeout new aaa('aaa').echo, 10  # ''
setTimeout new bbb('bbb').echo, 10  # 'bbb'

直接JavaScriptを書く/switch文/try-catch-finally

# 直接JavaScriptを記述する ( `` )
# インラインアセンブリなんて言葉がふと頭をよぎった
val = `function() {
  return '345'
}`
console.log val()  # 345


# switch/when/else
# switch-case-defaultと同じ
type_value = yes
switch typeof type_value
  when 'string' then  console.log 'str'
  when 'number' then  console.log 'int?'
  when 'boolean' then console.log 'bool'  # 'bool'
  else console.log 'unknown'


# try-catch-finally
# catchじゃなくてexceptだったらなー……
try
  xhr = new XMLHttpRequest()
catch e
  xhr = new ActiveXObject('MSXML')
finally
  xhr = null

いろいろ

# Chained Comparisons
# 直感的に書ける(?)比較
val = 5
console.log val if 0 < val < 10  # 5


# 既に使っていた気がするけど
# Rubyみたいに文字列中に文を書く
console.log "1 + 5 = #{1 + 5}"  # '1 + 5 = 6'


# 複数行文字列
multiline_str = 'aaa bbb ccc ddd
eee fff ggg hhh
iii jjj kkk lll'
console.log multiline_str  # aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll


# ヒアドキュメント
html = '''
       <p>
         paragraph
       <p>
       '''
console.log html  # <p>
                  #   paragraph
                  # </p>


# 複数行コメント
###
コメントだよ
複数行だよ
###


# コメントの付加できる正規表現
# Rubyの / /x かな?
regexp = ///
  ^         # 先頭に
  [0-9]+    # 0..9が1文字以上で
  :         # コロンがあり
  [a-z]{4}  # a..zが4文字続く文字列
///
console.log regexp  # /^[0-9]+:[a-z]{4}/


公式サイトの写経も終わったし、自作のライブラリをCoffeeScriptで書きなおしたりとかしてレベルアップを図ろうかな。
JavaScriptは好きだけど、CoffeeScriptに慣れると確かにJavaScriptは書きたくなくなる。