Avatar
そう、今回見つけたのはまさにそれで
7:38 AM
protocol Foo { static func generate() -> Self } extension Foo { init() { self = Self.generate() } } protocol Bar { init() } extension Bar { static func generate() -> Self { return Self() } }
7:39 AM
このFooとBarの差異
7:39 AM
Fooの実装はサブクラスを持てないが、Barの実装はサブクラスを持てる
7:40 AM
そこに、initであってもprotocol extensionに実装を記述することが可能、を組み合わせると
7:40 AM
✌('ω' )✌ > Swift楽しい < ✌( 'ω')✌
7:40 AM
となるわけです