private Declarations and Extensions class C { private var value: Int = 0 } extension C { func add(_ v: Int) { // extension から private 変数にアクセス value += v // ok (Swift 4) } } class OtherClass { func f() { let c = C() // 同じファイル内でも、別のクラスからは private 変数にアクセスできない let v = c.value // error (従来通り) } }
& でつないで複数指定できたが、プロトコル以外と組み合わせるこ とができなかった ◦ Swift 4 ではプロトコル以外と組み合わせることができるようなった SE-0156 Class and Subtype existentials protocol P {} class C {} class D: C, P {} let d: C & P = D()