Swiftの関数渡しのテスト
Swiftの関数渡しをテスト。
以下、javascriptっぽく書いた場合。
func sequence( f:(Int,Int)->Void) { for var i = 0; i < 10; i++ { f(i,i+1) } } let x = 10; sequence({ a,b in println("a=\(a+x), b=\(b+x)") })
渡す先の関数の最後の引数の場合は、無名関数の{}を外に出せる。
で、Rubyのブロックっぽく書ける。
sequence(){ a,b in println("a=\(a+x), b=\(b+x)") }
さらに、無名関数{a,b in }は省略でき、引数は$0, $1で記述できるので、
sequence(){ println("a=\($0+x), b=\($1+x)") }
も同じ動作。すばらしいね。
(※追記 2014/12/19)
なんと、もう一段階はしょれるのが分かった。
sequence { println("a=\($0+x), b=\($1+x)") }
関数の括弧も省略できる。なんというRubyっぽさ。