swift – 不支持使用“协议”作为符合协议“协议”的具体类型
发布时间:2020-12-14 04:44:28 所属栏目:百科 来源:网络整理
导读:我有以下快速代码: 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]
我有以下快速代码:
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 } } 编译器不让我编译抱怨: 我已经看到了其他一些答案,但无法将我的问题与任何问题联系起来. 解决方法
Fix正在用Element == Animal替换Element:Animal.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |