Ruby Language Opérateur Flip-Flop


Exemple

L'opérateur flip flop .. est utilisé entre deux conditions dans une instruction conditionnelle:

(1..5).select do |e|
  e if (e == 2) .. (e == 4)
end
# => [2, 3, 4]

La condition est false jusqu'à ce que la première partie devienne true . Ensuite , il évalue à true jusqu'à ce que la seconde partie est true . Après cela, il redevient false .

Cet exemple illustre ce qui est sélectionné:

[1, 2, 2, 3, 4, 4, 5].select do |e|
  e if (e == 2) .. (e == 4)
end
# => [2, 2, 3, 4]

L'opérateur flip-flop ne fonctionne que dans l'opérateur ifs (y compris unless ) et l'opérateur ternaire. Sinon, il est considéré comme l'opérateur de la gamme.

(1..5).select do |e|
  (e == 2) .. (e == 4)
end
# => ArgumentError: bad value for range

Il peut passer de false à true et inversement plusieurs fois:

((1..5).to_a * 2).select do |e|
  e if (e == 2) .. (e == 4)
end
# => [2, 3, 4, 2, 3, 4]