Le contraire de zero?... Pas exactement !
Un point d’interrogation ne veut pas nécessairement dire un retour de type booléen. nonzero?
fait partie des quelques exceptions à cette règle.
Elle retourne nil
si 0
, sinon self
. Donc dans un sens oui, ce sont bien des méthodes opposées. Aucune différence si on les utilise dans une condition.
Mais non, cette différence permet un tout autre usage de la méthode nonzero?
. Et c’est d’ailleurs la raison de sa création. On peut trouver dans ce fil Numeric#nonzero? behavior voulant retirer le ?
, la note 14 retraçant son historique (très intéressant). Pour faire court, c’était pour considérer 0
comme une valeur false
pour ce cas précis :
Bien que l’on puisse maintenant comparer des tableaux, nonzero?
reste intéressante car elle permet un court-circuit.
Le lien vers la documentation Ruby de nonzero?
.