gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:28:08 26 4
gpt4 key购买 nike

我想像在 Objective-C 中一样添加自定义运算符 &=:

precedencegroup HighPrecedence {
assignment: true
associativity: left
higherThan: BitwiseShiftPrecedence
}

infix operator &= : HighPrecedence
func &=(lhs: Bool, rhs: @autoclosure () -> Bool) -> Bool {
return lhs && rhs()
}

var i = true
i &= 1 > 0

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

error: left side of mutating operator isn't mutable: 'i' is immutable i &= 1 > 0

谁能帮帮我?

最佳答案

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

您也可以删除您的运算符定义,&= 已定义在 Swift 标准库中作为

infix operator &= : AssignmentPrecedence

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

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

var i = true
i &= 1 < 0

关于ios - 逻辑二进制中缀运算符出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41181642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com