Programmer's Note

コード読み書きの備忘録。

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っぽさ。