gpt4 book ai didi

swift - 不支持使用 'Protocol' 作为符合协议(protocol) 'Protocol' 的具体类型

转载 作者:搜寻专家 更新时间:2023-10-30 22:37:19 28 4
gpt4 key购买 nike

我有以下快速代码:

protocol Animal {
var name: String { get }
}

struct Bird: Animal {
var name: String
var canEat: [Animal]
}

struct Mammal: Animal {
var name: String
}

extension Array where Element: Animal {
func mammalsEatenByBirds() -> [Mammal] {
var eatenMammals: [Mammal] = []
self.forEach { animal in
if let bird = animal as? Bird {
bird.canEat.forEach { eatenAnimal in
if let eatenMammal = eatenAnimal as? Mammal {
eatenMammals.append(eatenMammal)
} else if let eatenBird = eatenAnimal as? Bird {
let innerMammals = eatenBird.canEat.mammalsEatenByBirds()
eatenMammals.append(contentsOf: innerMammals)
}
}
}
}
return eatenMammals
}
}

编译器不让我编译提示:在递归调用函数 ma​​mmalsEatenByBirds()

时,不支持使用“Animal”作为符合协议(protocol)“Animal”的具体类型

我看到了其他一些答案,但无法将我的问题与其中任何一个联系起来。

最佳答案

修复正在用 Element == Animal 替换 Element: Animal

关于swift - 不支持使用 'Protocol' 作为符合协议(protocol) 'Protocol' 的具体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43832473/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com