如何理解' ...'运算符与布尔比较一起使用

时间:2018-01-18 16:13:43

标签: ruby syntax

select = []
0.upto 5 do |value|
  select << value if (value==2)...(value==2)
end
p select # [2,3,4,5]

有谁能告诉我如何理解这段代码?

1 个答案:

答案 0 :(得分:5)

我学到了一些研究这个的东西,因为我从未见过范围运算符用于布尔值。显然在这种情况下,它被称为&#34;触发器&#34;运营商。基本上,条件评估False,直到条件的第一部分为True。然后它翻转&#34;翻转&#34;并评估True,直到第二部分评估True。在您的示例中,第二部分永远不会评估为True,因为它已经传递了value == 2的有效条件,因此它将继续提供所提供的范围。如果将第二个条件更改为value == 4

,您可以看到这个翻转操作
select = []
0.upto 5 do |value|
  select << value if (value==2)...(value==4)
end
p select # [2,3,4]

参考:http://nithinbekal.com/posts/ruby-flip-flop/