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



在我尝试编写具有高可读性的代码时,我一直使用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应用程序中似乎没有相同的优先级。这是令人困惑和误导的。有什么原因吗?

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

var = false or true

被解释为:

(var = false) or true

var的值为false,返回值为true。由于irb返回表达式的返回值,因此您将得到true。如果在你的rails应用程序中,你检查var的值,它应该被评估为false

最新更新