Avatar
protocol Animal {} protocol Cat: Animal {} protocol Owner { associatedtype Pet var pet: Pet { get } } func callBark(_ animal: Animal){} func callPetBark<T: Owner>(_ t: T) where T.Pet == Animal { callBark(t.pet) } func callPetBark<T: Owner>(_ t: T) where T.Pet == Cat { callBark(t.pet) } struct Lion: Cat {} struct Breeder: Owner { typealias Pet = Animal var pet: Animal { return Lion() } } let owner = Breeder() callPetBark(owner) assoctypeが「あるexistentialのサブタイプである」、っていう制約を書きたい (edited)
3:47 AM
要はcallPetBarkのオーバーロードを無くしたいんですけど、なんかいい方法無いですか? (edited)