触发器运算符
触发器运算符 ..
在条件语句中的两个条件之间使用:
(1..5).select do |e|
e if (e == 2) .. (e == 4)
end
# => [2, 3, 4]
条件评估为 false
,直到第一部分变为 true
。然后它评估为 true
,直到第二部分变为 true
。之后再次切换到 false
。
此示例说明了所选内容:
[1, 2, 2, 3, 4, 4, 5].select do |e|
e if (e == 2) .. (e == 4)
end
# => [2, 2, 3, 4]
触发器操作符仅适用于 ifs(包括 unless
)和三元运算符。否则,它被视为范围运算符。
(1..5).select do |e|
(e == 2) .. (e == 4)
end
# => ArgumentError: bad value for range
它可以从 false
切换到 true
并向后多次切换:
((1..5).to_a * 2).select do |e|
e if (e == 2) .. (e == 4)
end
# => [2, 3, 4, 2, 3, 4]