IRB控制台和rails应用程序评估'或'不同

时间:2014-07-23 14:40:40

标签: ruby-on-rails ruby ruby-on-rails-4 boolean irb

在尝试编写具有高可读性的代码时,我一直使用orand运算符作为||&&的同义词。但是,现在我已经认识到orand有不同的应用。 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应用程序中没有相同的优先级。这令人困惑和误导。有什么理由吗?

1 个答案:

答案 0 :(得分:5)

我认为你误解了结果。在irb和rails中解释表达式的方式应该没有区别。当你这样做时:

var = false or true

它被解释为:

(var = false) or true

之后var的值为false,其返回值为true。由于irb返回表达式的返回值,因此您将获得true。如果您在rails应用中检查var的值,则应将其评估为false