【问题标题】:iOS:Binary operator '|=' cannot be applied to two 'Bool' operandsiOS:二元运算符“|=”不能应用于两个“布尔”操作数
【发布时间】:2016-07-26 10:50:58
【问题描述】:

对两个布尔值执行按位运算时出错。 错误:“二元运算符 '|=' 不能应用于两个 'Bool' 操作数”

func checkAvailability(available:Bool) -> Bool{
    var bChanged = false
    bChanged |= available //"Binary operator '|=' cannot be applied to two 'Bool' operands"
    return bChanged  
}

请任何人帮我解决问题...

【问题讨论】:

  • bChanged = bChanged || available
  • @Droppy,试试吧。
  • 好吧,鉴于bChanged = false,那么它与返回available 相同。
  • @Droppy,我明白了。你认为那部分是真实的。但我认为这部分只是一个简化的代码,它描述了bChanged 是一个用某个值初始化的Bool 变量。也许我们应该澄清这些观点。
  • @BraneDullet 添加代码时,编辑问题以添加它,而不是在 cmets 中提及它

标签: ios swift2 xcode7


【解决方案1】:

你可以通过重载操作符自己定义:

斯威夫特 2:

func |= (inout left: Bool, right: Bool) {
   left = left || right
}

斯威夫特 3:

func |= (left: inout  Bool, right: Bool) {
   left = left || right
}

【讨论】:

  • 感谢您的建设性回答 - 与 OP 问题上的一些 cmets 不同。为了保持一致,我已将您的想法扩展到涵盖其他两个缺失的运算符。
【解决方案2】:

这是对 Lew 答案的简单扩展,将其他两个“缺失”运算符包括在内。

// A couple of operators that exist in C# and Java but are missing from Swift.

public func |= (leftSide : inout Bool, rightSide : Bool) {
   leftSide = leftSide || rightSide
}

public func &= (leftSide : inout Bool, rightSide : Bool) {
   leftSide = leftSide && rightSide
}

public func ^= (leftSide : inout Bool, rightSide : Bool) {
   leftSide = leftSide != rightSide
}

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 2016-04-10
    • 2015-09-01
    • 2017-11-22
    • 2018-06-23
    • 2023-03-10
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多