Swift 无法转换类型为';[MyProtocol]';到预期的参数类型';inout';
我试图找出这一切发生的原因,但我失败了,有什么不对劲吗 还有其他人遇到过这样的错误吗 我该怎么办,我需要帮助 这是我的代码:Swift 无法转换类型为';[MyProtocol]';到预期的参数类型';inout';,swift,Swift,我试图找出这一切发生的原因,但我失败了,有什么不对劲吗 还有其他人遇到过这样的错误吗 我该怎么办,我需要帮助 这是我的代码: protocol MyProtocol { } struct MyStruct: MyProtocol { } let structs = [MyStruct(), MyStruct()] var protocols = [MyProtocol]() protocols = structs // it's ok protocols += structs /
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]