swift – 不支持使用“协议”作为符合协议“协议”的具体类型

swift – 不支持使用“协议”作为符合协议“协议”的具体类型,第1张

概述我有以下快速代码: protocol Animal {var name: String { get }}struct Bird: Animal { var name: String var canEat: [Animal]}struct Mammal: Animal { var name: String}extension Array where Ele 我有以下快速代码:

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    }}

编译器不让我编译抱怨:
在递归调用函数mammalsEatenByBirds()时,不支持使用’Animal’作为符合协议’Animal’的具体类型

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

解决方法 Fix正在用Element == Animal替换Element:Animal. 总结

以上是内存溢出为你收集整理的swift – 不支持使用“协议”作为符合协议“协议”的具体类型全部内容,希望文章能够帮你解决swift – 不支持使用“协议”作为符合协议“协议”的具体类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1008071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存