【发布时间】:2015-05-22 02:26:18
【问题描述】:
我都这样做,但不明白为什么这个操场的最后一行会引发编译器错误:
protocol Model { }
struct Post: Model {
var content = "Hello"
}
struct Posts: Model {
var allPosts: [Post] = [Post(), Post(), Post()]
}
func handler(items: [Model]) { }
var posts = Posts()
handler(posts.posts)
如果您在字里行间阅读,我的目标是能够使用一个参数调用一个函数,该参数是一个符合协议的结构数组。该函数应该能够处理不同类型结构的数组。很想知道我缺少什么,以及您是否有更好的解决方案的建议。
谢谢!
【问题讨论】:
-
您的处理函数需要一个模型数组,而您正在传递一个 Post 数组,您需要将其更改为 func handler(items: [Post]) { }
-
不幸的是,这对我的情况没有帮助。正如我在帖子中提到的,我有一个硬性要求:函数应该能够处理不同类型结构的数组
-
对不起,我错过了,在这种情况下,您需要使用@Lei Wang 推荐的泛型,但如果他说的不是限制,而是 swift 中的强大工具,则相反。更多细节在这里