Ruby on Rails : l’opérateur bang-bang !!

Bon, ce n’est pas vraiment un opérateur, mais l’idiome est assez répandu et peut surprendre. Il est utilisé pour convertir nil en false, ce qui peut éviter des tests spécifiques comme if variable.nil?

Deux petits rappels :

  1. ! est l’opérateur de négation logique.
  2. Seuls false et nil ont la valeur booléenne FAUX. Tout le reste est vrai (y compris 0, la chaîne de caractère vide, etc.

Nous en déduisons la table de vérité suivante :

variable !variable !!variable
* false true
false true false
nil true false
  • = n’importe quoi sauf nil ou false, donc de valeur booléenne true.

CQFD.