pig's diary

何でも忘れるので万年初心者ね

15パズル in coffee script

coffee script で15パズルを書いてみました。
まえに作ったものを、書き直しました。
http://stakam.net/playground/111013/
http://stakam.net/playground/111013/15pzl.coffee

coffee script はすごく楽でいいです。
Class を作るのとかも

class Fifteen
  constructor: ->
    // init something

だけです。メソッドの中で、this.element などは @element でアクセスできるのもいいです。

一番いいのは、ループ系です。とても楽です。

// javascript
var arr = [2,3,4];
var result = [];
for (var i=0;i<arr.length;i++) {
  result[i] = arr[i] * 10;
}

# coffee
arr = [2,3,4]
result = (val * 10 for val in arr)

カッコでくくるとmapを代入。くくらないと<代入式>をループするみたいです。
この一行方式で書いた、<XHRで到着したXMLデータをパースする>がとても楽でした。

# parse xml data on jQuery
$.get 'url.xml', param, (data) =>
  $photo = $('photo', data)[0]
  photo_ = {}
  attrs = 'id owner secret server farm title url_l height_l width_l'.split(' ')
  photo_[attr] = $photo.attr(attr) for attr in attrs
  photo_ // parsed data

あと、思ったのが、連想配列のループは for .. of になる。

console.log prop for prop of window # loop hash

coffee だと for .. in が配列用になるんですね。