在其他语言中,我已经完成了像这样的逻辑表达式,没有任何问题,但是我在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传递。
答案 0 :(得分:2)
您需要||
,而不是|
。 ||
是“逻辑或”。 |
是“按位或”。
当您将||
和&&
混合使用时,需要用括号括起来,以免产生歧义。
根据您的描述,您需要:
if appPurchased == false &&
enabled == true &&
(button == photoLibraryBtn ||
button == takeVideoBtn) {
continue
}
这也可以写成:
if !appPurchased &&
enabled &&
(button == photoLibraryBtn ||
button == takeVideoBtn) {
continue
}