【发布时间】:2020-11-28 00:24:50
【问题描述】:
我很困惑 Ruby 除非有条件地与 || 一起工作。运算符。
所以我基本上得到了什么:
<% unless @instance_variable.method || local_variable.another_method %>
code block
<% end %
目前,第一部分评估为假,第二部分评估为真。而且我没有收到错误,它可以满足我的要求。但是,如果我只是写:
<% unless @instance_variable.method %>
code block
<% end %>
我得到一个错误抛出,我在写的时候得到一个错误:
<% unless @instance_variable.method && local_variable.another_method %>
code block
<% end %>
所以我的问题。如果第一部分评估为假,它会缩短并通过代码块,而不是看另一边吗?如果是这样,为什么留下第二部分会引发错误?它是如何运作的?
抱歉,如果您需要代码,我觉得这是一个逻辑/代数解决方案。
【问题讨论】:
-
错误是什么?它实际上可能是由代码块的内容引起的,而不是
unless行 -
错误确实是代码块中的一行。当我使用 ||代码块似乎被完全忽略,因此避免了错误。如果我不使用 ||或使用 &&,代码块中的错误被引发。本质上,|| 之后的第二部分(评估为真)使其跳过该块。我只是不明白它为什么会跳过。
标签: ruby-on-rails ruby conditional-statements demorgans-law unless