はじめに
初見で{ $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