Swift中出现“相邻运算符在非关联优先级组'ComparisonPrecedence'中”

时间:2018-07-10 19:44:20

标签: swift logical-operators

在其他语言中,我已经完成了像这样的逻辑表达式,没有任何问题,但是我在Swift中度过了艰难的时光。

如果appPurchased = false AND enabled = true并且按钮等于photoLibraryBtn或takeVideoBtn,我希望此评估为true:

for button in buttonList {

    if appPurchased == false &&
        enabled == true &&
        button == photoLibraryBtn |
        button == takeVideoBtn {

        continue

    }

    button.isEnabled = enabled
    button.isUserInteractionEnabled = enabled
    button.alpha = alpha

}

我收到错误消息“相邻的运算符在非关联优先级组'ComparisonPrecedence'中”,我在Google上找不到任何结果。我也没有在Swift中看到像我这样的示例,因此我认为它们已经消除了单个“ |”竖线字符,只应按一定顺序使用双竖线“ ||”。但是,如果appPurchased = false,enabled = true,button = photoLibraryBtn或button = takeVideoBtn,我不希望if语句作为true传递。

1 个答案:

答案 0 :(得分:2)

您需要||,而不是|||是“逻辑或”。 |是“按位或”。

当您将||&&混合使用时,需要用括号括起来,以免产生歧义。

根据您的描述,您需要:

if appPurchased == false &&
    enabled == true &&
    (button == photoLibraryBtn ||
    button == takeVideoBtn) {

    continue
}

这也可以写成:

if !appPurchased &&
    enabled &&
    (button == photoLibraryBtn ||
    button == takeVideoBtn) {

    continue
}