Ruby,除非带有||运算符的条件



我对Ruby除非conditional如何与||运算符一起工作感到困惑。

所以我基本上得到了:

<% 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 %>

所以我的问题。如果第一部分评估为false,它会缩短并遍历代码块,而不看另一边吗?如果是这样的话,为什么把第二部分去掉会产生错误?这一切是如何运作的?

抱歉,如果你需要代码,我觉得这是一个逻辑/代数解决方案。

UnlessIf完全相反。它是一个否定的If

当条件为false时,Unless将工作

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

下面的代码不会执行put语句,因为该条件给出了真正的

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

相关内容

  • 没有找到相关文章

最新更新