无法转换类型“[MyProtocol]”的值与预期的参数类型“INOUT _”
问题描述:
无法转换类型“[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
答
有编译器魔力,在这条线发生:
protocols = structs
其循环通过结构,将每一个装入一个协议容器,然后完成任务。它本质上执行此操作:
protocols = structs.map{ $0 as MyProtocol }
或等价:
protocols = structs as [MyProtocol]
这个编译器魔法没有申请+=
操作。你可以自己做,但:
protocols += structs as [MyProtocol]