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 :
- ! est l’opérateur de négation logique.
- 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.