検証環境: 1.2
, 2.0 (Xcode7.0 beta)
とあるコードを読んでてとっさに理解できなかったのでメモ。
初期化が期待されるプロパティを持つ struct の初期化
struct A {
let str: String
}
var a = A("a") // error: missing argument label 'str:' in call var a = A("a")
プロパティを暗黙のイニシャライザで初期化しようとすると、当然ラベルがいる。
関数による初期化が期待されるプロパティを持つ struct の初期化
struct B {
let someFunc: String -> String
}
var b = B { x in "result" }
b.str("b") // "result"
ラベルがいらないんだなあ。
Trailing closures はラベルを省略できる
ドキュメント に普通に書いてあった。
いきなり Struct の初期化時に使われて一瞬何やってるか分からなかったという話でした。