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 解决方案。

UnlessIf正好相反。这是一个否定 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 

这里有更多参考https://mixandgo.com/learn/if-vs-unless-in-ruby