触发器运算符

触发器运算符 .. 在条件语句中的两个条件之间使用:

(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]