The obscure conditional expression
The « flip-flop » is a conditional expression that hides an « ON/OFF » state. Ruby differentiates it from a Range
when used in a control expression (if
, while
, !
, …). The format is (condition turn ON) .. (condition turn OFF)
.
Here’s the equivalent of the previous code without the flip-flop, so you can see how it works.
We came across it again during an exercise involving the display of temperatures when the cooling system is in operation. This turns on when the temperature exceeds 40° and off when it drops below 30°. Easy with the « flip-flop »!
Of course, you mustn’t overdo it… An example found on the net of the famous fizz-buzz problem with the « flip-flop » (and without the modulo operator!). You can notice an exclusive Range
delaying the turn off condition
to the next iteration.
In fact, it was almost removed, starting with a warning about its use in 2.6, but finally retained because it was used by a number of us (https://bugs.ruby-lang.org/issues/5400). And what about you?
Link to Ruby documentation for flip-flop.