-2 ruby boolean ruby-on-rails irb ruby-on-rails-4
在我尝试编写具有高可读性的代码时,我一直使用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
Run Code Online (Sandbox Code Playgroud)
在我的rails应用程序中:
var = false or true
# => false
Run Code Online (Sandbox Code Playgroud)
简而言之,似乎or在IRB和实际的rails应用程序中没有相同的优先级.这令人困惑和误导.有什么理由吗?
我认为你误解了结果.在irb和rails中解释表达式的方式应该没有区别.当你这样做时:
var = false or true
Run Code Online (Sandbox Code Playgroud)
它被解释为:
(var = false) or true
Run Code Online (Sandbox Code Playgroud)
之后的价值var是false,并且其返回值true.由于irb返回表达式的返回值,您将得到true.如果在您的rails应用程序中,您检查var应评估的值false.