boost::lambda風無名関数
fun(x){ return x+5; } を @1+5 と書ける機能です。
fun(x, y){ return x*y; } を @1*@2 と書ける機能です。
// 偶数だけ取り出して配列としてプリントする [4, 5, 8, 3, 7, 2].select(fun(x){ return x%2==0; }).to_a.p; ↓ [4, 5, 8, 3, 7, 2].select(@1%2==0).to_a.p;
これは「どっからどこまでが関数リテラルとなるのか?」が上手く定義できないのと、やっぱり見難いのでやめました。
@2 - @1; // fun(x, y){ return y - z; } @2.foo(@1+1); //これは? fun(x, y){ return y.foo(x+1); } //それとも fun(x, y){ return y.foo(fun(x){ return x+1; })
次のように書ける記法を作ったので必要無いでしょう。
[4, 5, 8, 3, 7, 2].select(|x|x%2==0).to_a.p;