Il y avait deux bonnes raisons pour lesquelles Ruby 1.8 ne prennent pas en charge certains types de surcharge comme ||
/or
, &&
/and
, !
/not
, ?:
:Pourquoi Ruby 1.9 permet le dépassement! ! =! ~?
- sémantique de court-circuit ne peuvent pas être mises en œuvre avec des méthodes en Ruby sans changements très étendus à la langue.
- Ruby est codé en dur pour traiter seulement
nil
etfalse
comme faux dans des contextes booléens.
La première raison ne concerne pas !
/not
mais la deuxième fait encore. Ce n'est pas comme si vous pouviez introduire vos propres types d'objets de type booléen en utilisant seulement !
alors que &&
/||
sont toujours codés en dur. Pour d'autres utilisations, il existe déjà un opérateur de complémentarité ~
avec &
/|
.
Je peux imaginer qu'il ya beaucoup de code attendant !obj
être synonyme de obj ? false : true
et !!obj
avec obj ? true : false
- Je ne suis même pas sûr de savoir comment est le code censé traiter des objets qui évaluent à true dans le contexte booléen, mais !
à quelque chose de non-faux.
Il ne semble pas que Ruby envisage d'introduire un support pour d'autres fausses valeurs. Rien dans Ruby stdlib semble remplacer !
donc je n'ai trouvé aucun exemple.
Est-ce qu'il y a un très bon usage qui me manque?