1

除非条件与 || 一起使用,否则我对 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 %>

所以我的问题。如果第一部分评估为假,它会缩短并通过代码块,而不是看另一边吗?如果是这样,为什么留下第二部分会引发错误?这一切如何运作?

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

4

1 回答 1

4

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

&&的工作是因为它false在 stmt 下面执行时给出并且unless使用 false :-

 2.3.4 :019 > false && true
     => false 

有关更多信息,请参阅https://mixandgo.com/learn/if-vs-unless-in-ruby

于 2020-08-07T16:49:29.260 回答