Swiftのクロージャは、他言語のラムダ式みたいなもん。あと、一般的なクロージャの意味も含んでいる。

let nums = [3, 2, 5, 4, 1]

let sortedNums = nums.sorted({(a:Int,b:Int)->Bool in
    return a < b
})

println(sortedNums) // "[1, 2, 3, 4, 5]"と表示

inのあと、return文しかない場合、returnを省略できる。
この場合、型推論も効くので引数の型も戻り値の型も省略できる。

let nums = [3, 2, 5, 4, 1]

let sortedNums = nums.sorted({a,b in a < b})

println(sortedNums) // "[1, 2, 3, 4, 5]"と表示

引数の()は、なんで省略できるんだろう(笑)

さらに、引数のa、bも省略できる。この場合、引数の1つ目は$0、2つ目は$1、・・・となる。

let nums = [3, 2, 5, 4, 1]

let sortedNums = nums.sorted({ $0 < $1 })

println(sortedNums) // "[1, 2, 3, 4, 5]"と表示

さらに、省略。ここまでくると、なんだかな〜w

let nums = [3, 2, 5, 4, 1]

let sortedNums = nums.sorted(<)

println(sortedNums) // "[1, 2, 3, 4, 5]"と表示

あと、関数にわたすクロージャが最後の引数の場合、外に追い出せる。

let sortedNums = nums.sorted({a,b in a < b})

これの場合、こんなふうに書ける。

let sortedNums = nums.sorted(){
    a,b in a < b
}