select = []
0.upto 5 do |value|
select << value if (value==2)...(value==2)
end
p select # [2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何理解这段代码?
我学到了一些东西,因为我从未见过使用布尔值的范围运算符.显然在这种情况下,它被称为"触发器"操作符.基本上,条件评估False直到条件的第一部分为止True.然后它"翻转"并评估,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]
Run Code Online (Sandbox Code Playgroud)
参考:http://nithinbekal.com/posts/ruby-flip-flop/