LoginSignup
22
20

More than 5 years have passed since last update.

[Swift] Closure記述方法の一覧

Posted at

書き方が色々ありすぎてややこしいよ!
ということで一覧でさっと見れるようにまとめてみた。

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.
同じような記事がすでに上がってそうな気もして、ちょっと投稿をためらった。

22
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
20