Ruby 除非有条件 ||操作员
Ruby unless conditional with || operator
我对 Ruby unless 条件如何与 || 一起工作感到困惑运算符。
所以我基本上得到了什么:
<% unless @instance_variable.method || local_variable.another_method %>
code block
<% end %
目前,第一部分评估为 false,第二部分评估为 true。而且我没有收到错误消息,它按照我的意愿行事。但是,如果我只写:
<% unless @instance_variable.method %>
code block
<% end %>
我收到一个错误抛出并且我在写时收到一个错误:
<% unless @instance_variable.method && local_variable.another_method %>
code block
<% end %>
所以我的问题。如果第一部分评估为假,它会缩短并通过代码块,而不看另一边吗?如果是这样,为什么遗漏第二部分会引发错误?这一切是如何运作的?
抱歉,如果您需要代码,我觉得这是一个 logic/algebra 解决方案。
Unless
与If
正好相反。这是一个否定 If
.
Unless
将在条件为 false
时起作用
2.3.4 :010 > unless false || false
2.3.4 :011?> puts "unless block"
2.3.4 :012?> end
unless block
=> nil
所以通过这个或条件 ||
结果是 false
当两边都是 false
2.3.4 :019 > false || false
=> false
否则结果总是true
下面的代码不会执行 puts 语句,因为条件为真
2.3.4 :022 > unless false || true
2.3.4 :023?> puts "unless block"
2.3.4 :024?> end
=> nil
2.3.4 :019 > false || true
=> true
并且你的 &&
是有效的,因为它在 stmt 下面执行时给出 false
并且 unless
与 false 一起工作:-
2.3.4 :019 > false && true
=> false
我对 Ruby unless 条件如何与 || 一起工作感到困惑运算符。
所以我基本上得到了什么:
<% unless @instance_variable.method || local_variable.another_method %>
code block
<% end %
目前,第一部分评估为 false,第二部分评估为 true。而且我没有收到错误消息,它按照我的意愿行事。但是,如果我只写:
<% unless @instance_variable.method %>
code block
<% end %>
我收到一个错误抛出并且我在写时收到一个错误:
<% unless @instance_variable.method && local_variable.another_method %>
code block
<% end %>
所以我的问题。如果第一部分评估为假,它会缩短并通过代码块,而不看另一边吗?如果是这样,为什么遗漏第二部分会引发错误?这一切是如何运作的?
抱歉,如果您需要代码,我觉得这是一个 logic/algebra 解决方案。
Unless
与If
正好相反。这是一个否定 If
.
Unless
将在条件为 false
2.3.4 :010 > unless false || false
2.3.4 :011?> puts "unless block"
2.3.4 :012?> end
unless block
=> nil
所以通过这个或条件 ||
结果是 false
当两边都是 false
2.3.4 :019 > false || false
=> false
否则结果总是true
下面的代码不会执行 puts 语句,因为条件为真
2.3.4 :022 > unless false || true
2.3.4 :023?> puts "unless block"
2.3.4 :024?> end
=> nil
2.3.4 :019 > false || true
=> true
并且你的 &&
是有效的,因为它在 stmt 下面执行时给出 false
并且 unless
与 false 一起工作:-
2.3.4 :019 > false && true
=> false