逻辑二进制中缀运算符出错

时间:2016-12-16 09:57:16

标签: ios swift operators

我想在Objective-C中添加自定义运算符(?=X)

&=

但我在最后一行有一个错误:

  

错误:变异运算符的左侧不可变:'i'是不可变的   i& = 1> 0

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您的&=运算符会改变左操作数,因此您拥有 将lhs定义为 inout参数(而不是返回 一个值)。

您还可以删除运营商定义,&=已定义 在Swift标准库中作为

infix operator &= : AssignmentPrecedence

(用于BitwiseOperations)。所以这已足够并按预期工作:

func &=(lhs: inout Bool, rhs: @autoclosure () -> Bool) {
    lhs = lhs && rhs()
}

var i = true
i &= 1 < 0