中途半端に似通ったデータを使う際有用なCurry化ですが、Livescriptでも気軽に使えます。
実際のところ
例1:カンマ区切りCSVっぽい文字列
簡単な例として、カンマ区切りCSVっぽいデータを生成したい場合を考えます。
Curry関数は"-->"と、普段の関数定義よりハイフンを一個多めに書くだけで使えます。
times = (x, y) --> "temp,#x,#y;" base_A = times "nodeA" base_B = times "nodeB" str = "#{base_A 5}#{base_A 7}#{base_B 10}"
結果は、
temp,nodeA,5;temp,nodeA,7;temp,nodeB,10;
と意図通り楽に出すことができました。
例2:配列の各要素を特定の条件でフィルタリング
数値が入っている配列のうち、負のものは0とする……なんて処理の場合は
func = (x,y) --> Math.max(x,y) zeroFilter = func 0 brightness = [0.2, -0.3, 1.0, -0.5] brightness = brightness.map( zeroFilter ); #=> [0.2,0,1,0]
と、mapメソッド中でProcよろしく判定できます。