class Hoge: PiyoObject, FooProtocol {}
class Fuga: PiyoObject, FooProtocol {}
PiyoObjectクラスを継承しつつ、FooProtocolに準拠している2つのクラスがある。
これを両方返すfactory methodを作りたい。
func makePiyoFoo<T: PiyoObject>() -> T where T: FooProtocol {
switch self {
case .hoge: return Hoge() as T
case .fuga: return Fuga() as T
}
}
Tで一回型のジェネリクスを取りつつ返り値でプロトコル準拠を保証すればOK