書き方が色々ありすぎてややこしいよ!
ということで一覧でさっと見れるようにまとめてみた。
var fruits = ["Apple", "Orange", "Banana", "Lemon"]
// 1. 基本形
fruits.sort({ (s1: String, s2: String) -> Bool in
return s1 < s2
})
// 2. 引数の型名(String)を省略 ※型推論
fruits.sort({ (s1, s2) -> Bool in
return s1 < s2
})
// 3. 引数の()を省略 ※シンタックスシュガー
fruits.sort({ s1, s2 -> Bool in
return s1 < s2
})
// 4. 戻り値の型(-> Bool)を省略 ※型推論
fruits.sort({ s1, s2 in
return s1 < s2
})
// 5. returnを省略 ※シンタックスシュガー
fruits.sort({ s1, s2 in
s1 < s2
})
// 6. 引数の省略形を使用 ※シンタックスシュガー
fruits.sort({ $0 < $1 })
// 7. 関数演算子(func < (String, String) -> Bool)を指定
fruits.sort(<)
// 8. 引数の外で指定({}) ※シンタックスシュガー
fruits.sort{ $0 < $1 }
「型推論」によるものか「シンタックスシュガー」によるものかはコメントで書いています。
(厳密には型推論もシンタックスシュガーですけれど、理解しやすさを目的に分けています)
それぞれの詳しい解説については、Qiita上に分かりやすい記事がいくつも上がっていましたので、そちらをご覧いただければと思います。
プロジェクトでSwiftを使うときには、コーディング規約などで書き方を決めたほうが良さげですね。
P.S.
同じような記事がすでに上がってそうな気もして、ちょっと投稿をためらった。