为什么使用rails或“ ||”需要特定的.include?()格式

时间:2018-08-01 00:42:22

标签: ruby-on-rails boolean

我的代码中出现以下错误:

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

我很困惑,有人可以解释吗?

1 个答案:

答案 0 :(得分:2)

这是Ruby优先级问题。当您运行a == 1 || array.include? a时,...操作的执行顺序不一定直观(没有括号)。要进行验证,您可以尝试

a == 1 or array.include? a

应返回trueor的优先级低于Ruby中的||)。

您可以检出this问题以进一步说明。