在尝试编写具有高可读性的代码时,我一直使用or
和and
运算符作为||
和&&
的同义词。但是,现在我已经认识到or
和and
有不同的应用。 http://devblog.avdi.org/2010/08/02/using-and-and-or-in-ruby/
令人困惑的是在我的rails应用程序和IRB控制台中运行以下代码时的区别。
在IRB:
var = false or true
# => true
在我的rails应用程序中:
var = false or true
# => false
简而言之,似乎or
在IRB和实际的rails应用程序中没有相同的优先级。这令人困惑和误导。有什么理由吗?
答案 0 :(得分:5)
我认为你误解了结果。在irb和rails中解释表达式的方式应该没有区别。当你这样做时:
var = false or true
它被解释为:
(var = false) or true
之后var
的值为false
,其返回值为true
。由于irb返回表达式的返回值,因此您将获得true
。如果您在rails应用中检查var
的值,则应将其评估为false
。