触发器运算符
触发器运算符 .. 在条件语句中的两个条件之间使用:
(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]