【发布时间】:2015-11-30 21:51:39
【问题描述】:
希望对一个变量进行两个测试,这可能没有在 rails 视图中定义。
<% if defined(:var) && var.present? %>
<%= var.value %>
<% end %>
但是,如果未定义 var,则会引发 undefined local variable or method 错误。我假设 ruby/rails 会短路第一个表达式,而不是尝试评估第二个,类似于 python
>>> a = False
>>> a and b
False
>>> b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
在第二次评估之前发生短路的任何原因?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 ruby-2.0 short-circuiting