觸發器運算子

觸發器運算子 .. 在條件語句中的兩個條件之間使用:

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