はじめに
初見で{ $0.count }とか出てきて驚いた。
引数の型、戻り値の型、return、引数名が徐々に省略されていって、{ $0.count }になるらしい。
クロージャ(≒名前のない処理のまとまり)
{ (引数名1: 型, 引数名2: 型...) -> 戻り値の型 in
クロージャの実行時に実行される文
必要に応じてreturn文で戻り値を返却する
}
石川 洋資; 西山 勇世. [増補改訂第3版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus (Japanese Edition) (pp. 255-256). 株式会社技術評論社. Kindle Edition.
省略前
var closure: (String) -> Int
closure = { (str: String) -> Int in
return str.count
}
closure("abc") // 結果: 3
戻り値の型-> Intを省略
closure = { (str: String) in
return str.count
}
closure("abc") // 結果: 3
引数の型: Stringを省略
closure = { str in
return str.count
}
closure("abc") // 結果: 3
returnを省略
closure = { str in
str.count
}
closure("abc") // 結果: 3
引数名strを省略(簡略引数名を使用)
closure = { $0.count }
closure("abc") // 結果: 3