Avatar
protocol Animal { func bark() -> String } protocol Cat { } extension Animal { func bark() -> String { fatalError("abstract") } } extension Animal where Self: Cat { func bark() -> String { return "nyan" } } class AnimalImpl: Animal { } class CatImpl: AnimalImpl, Cat { } CatImpl().bark() // nyan 単一プロジェクトの中だと一見上手く動くんですが、CatImplが別ライブラリにあると上手く行かない。