我的代码中出现以下错误:
a = 1
array = [1, 2]
array.include? a
=> true
a == 1 || array.include? a
=> syntax error, unexpected tIDENTIFIER, expecting end-of-input
我本以为您在OR语句中不能有空格,也不能以变量结尾,但是以下代码块可以正常工作:
array.include? a || 1 == a
=> true
然后我设法弄清楚了如何使其工作:
a == 1 || array.include?(a)
=> true
我很困惑,有人可以解释吗?
答案 0 :(得分:2)
这是Ruby优先级问题。当您运行a == 1 || array.include? a
时,...操作的执行顺序不一定直观(没有括号)。要进行验证,您可以尝试
a == 1 or array.include? a
应返回true
(or
的优先级低于Ruby中的||
)。
您可以检出this问题以进一步说明。