【问题标题】:IRB console and rails application evaluates 'or' differentlyIRB 控制台和 Rails 应用程序以不同方式评估“或”
【发布时间】:2014-07-23 14:40:40
【问题描述】:

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

【问题讨论】:

  • 实际应用中是如何检查的?
  • 这不可能。
  • 是的,我刚刚检查了我自己的应用程序,var = false or true 的评估结果为 true。
  • 请不要使用虚构的代码。展示一个真实的(但最小的)运行的例子。您发布的代码应始终评估为 true。
  • @Mikael 不要使用or。使用||or 是通往悲伤的道路。

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


【解决方案1】:

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

var = false or true

它被解释为:

(var = false) or true

之后var的值为false,其返回值为true。由于 irb 返回表达式的返回值,你将得到true。如果在您的 Rails 应用程序中检查 var 的值,则应将其评估为 false

【讨论】:

  • 当然是这样。我误解了 IRB。谢谢。
猜你喜欢
  • 2013-06-08
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多