在我尝试编写具有高可读性的代码时,我一直使用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应用程序中似乎没有相同的优先级。这是令人困惑和误导的。有什么原因吗?
我认为你误解了结果。在irb和rails中解释表达式的方式应该没有区别。当你这样做的时候:
var = false or true
被解释为:
(var = false) or true
后var
的值为false
,返回值为true
。由于irb返回表达式的返回值,因此您将得到true
。如果在你的rails应用程序中,你检查var
的值,它应该被评估为false
。