Avatar
対応がわかりづらかったのでワンソースにして、 print する値もそろえてみた。 @swift-main protocol P { func f(_: Int) func f(_: Int, _: Int) } extension P { func f(_ aa: Int) { print(1) } } struct S: P { func f(_ aa: Int, _ bb: Int = 0) { print(2) } } let s: S = S() s.f(42) let p: P = s p.f(42) ////////////////////// class C1 { func f(_ aa: Int) { print(1) } func f(_ aa: Int, _ bb: Int) { print(999) } } class C2: C1 { override func f(_ aa: Int, _ bb: Int = 0) { print(2) } } let c2: C2 = C2() c2.f(42) let c1: C1 = c2 c1.f(42)