2017-02-17 43 views
0

enter image description here无法转换类型“[MyProtocol]”的值与预期的参数类型“INOUT _”

我试图找出是什么让这发生了,但我失败了,有什么问题吗?

确实有其他人遇到这样的错误?

我怎样才能为这样做,我需要帮助

这是我的代码:

protocol MyProtocol { 

} 

struct MyStruct: MyProtocol { 

} 


let structs = [MyStruct(), MyStruct()] 

var protocols = [MyProtocol]() 

protocols = structs // it's ok 

protocols += structs // this got an error 

回答

2

有编译器魔力,在这条线发生:

protocols = structs 

其循环通过结构,将每一个装入一个协议容器,然后完成任务。它本质上执行此操作:

protocols = structs.map{ $0 as MyProtocol } 

或等价:

protocols = structs as [MyProtocol] 

这个编译器魔法没有申请+=操作。你可以自己做,但:

protocols += structs as [MyProtocol] 
相关问题