引数束縛 or カリー化 or MochiKit.bindって感じ
うーん、ショートカットメソッドとか作るときにグリグリ書くのもあんまりって感じだな。
なので引数束縛をやってシンプルに書ける機構が必要だなと。
MochiKitのbindは第一引数だけ束縛するんだけど全部やればええやんってことで。
kumu.bind = function(func){ return function(){ var bind = arguments; return function(){ var args = new Array(); args = args.concat.apply(args, bind); args = args.concat.apply(args, arguments); return func.apply(null, args); }; }; };
まー引数をガツガツくっつけていけばいいだけなので綺麗に書くとこんな感じ。
(まーこれもどっかで見た事あるよなあ)
全部拾いあげてるのがいいのか悪いのかは別だけど。
test.html
function test(x, y){ return x + y; } function test2(x){ return kumu.bind(test)(x); } var f = test2(10); alert(f(10));
ほおー。これはこれは便利っすなあ。
クロージャーで関数を手作業で書く必要なくなりますなあ。
これを使うと依然書いた
//tag,attr,textのメソッドを引数束縛 var H1 = kumu.bind(kumu.dom.createDOM)('h1'); //第一引数を束縛するのでattr,textのメソッドで呼び出せる H1('Test')
なーんてシンプルに書けたりする。
やっぱMochiKitは参考になるぜ!
(pythonicな思想がいっぱいある)
Lisperにして見ればカリー化なんて多分やって当たり前の話なんだと思うけどね。
うくく。