select = []
0.upto 5 do |value|
select << value if (value==2)...(value==2)
end
p select # [2,3,4,5]
有谁能告诉我如何理解这段代码?
答案 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]