为什么不适+=
用于隐式展开的选项,例如:
var count: Int! = 10
count = count + 10 // This works
count += 10 // this does not work
为什么不像count = count + 10
?
为什么不适+=
用于隐式展开的选项,例如:
var count: Int! = 10
count = count + 10 // This works
count += 10 // this does not work
为什么不像count = count + 10
?
它不起作用,因为复合赋值运算符+=
期望左侧是可变Int
变量。当您传递它时count
,编译器会解开隐式解包的可选项并发送一个不可变的Int
值,该值不能作为预期的inout
参数传递。+=
如果你真的想这样做,你可以重载+=
:
func += (left: inout Int!, right: Int) {
left = left! + right
}
现在+=
将左侧作为隐式展开的可选项发送而不展开,并且展开是在函数内部显式完成的。
var count: Int! = 10
count = count + 10 // 20
count += 10 // 30