大佬教程收集整理的这篇文章主要介绍了swift2 – 协议不符合自身?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
protocol P { } struct S: P { } let arr:[P] = [ S() ] extension Array where Element : P { func test<T>() -> [T] { return [] } } let result : [S] = arr.test()@H_801_17@编译器说:类型P不符合协议P.为什么不?这感觉就像一个洞在语言,不知何故。我意识到,该问题源于声明数组arr作为协议类型的数组,但是是不合理的事情吗?我认为协议准确地帮助提供结构类似于类型层次结构。 @H_801_17@编辑:Swift 3更准确地重写错误消息:“不支持将”P“用作符合协议”P“的具体类型。
protocol P { } struct S: P { } struct AnyPArray { var array: [P] init(_ array:[P]) { self.array = array } } extension AnyPArray { func test<T>() -> [T] { return [] } } let arr = AnyPArray([S()]) let result: [S] = arr.test()@H_801_17@当Swift允许你直接这样做(我最终期望这样做),它可能只是为你自动创建这个框。递归枚举具有这个历史。你不得不把它们封装起来,这是令人难以置信的恼人和限制,然后最终编译器添加间接来做同样的事情更自动。
以上是大佬教程为你收集整理的swift2 – 协议不符合自身?全部内容,希望文章能够帮你解决swift2 – 协议不符合自身?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。