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

-2 ruby boolean ruby-on-rails irb ruby-on-rails-4

在我尝试编写具有高可读性的代码时,我一直使用orand运算符作为||和的同义词&&.虽然,现在我已经了解or并且and有不同的应用.http://devblog.avdi.org/2010/08/02/using-and-and-or-in-ruby/

令人困惑的是在我的rails应用程序和IRB控制台中运行以下代码时的区别.

在IRB:

var = false or true
# => true
Run Code Online (Sandbox Code Playgroud)

在我的rails应用程序中:

var = false or true
# => false
Run Code Online (Sandbox Code Playgroud)

简而言之,似乎or在IRB和实际的rails应用程序中没有相同的优先级.这令人困惑和误导.有什么理由吗?

saw*_*awa 5

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

var = false or true
Run Code Online (Sandbox Code Playgroud)

它被解释为:

(var = false) or true
Run Code Online (Sandbox Code Playgroud)

之后的价值varfalse,并且其返回值true.由于irb返回表达式的返回值,您将得到true.如果在您的rails应用程序中,您检查var应评估的值false.