Est-il préférable d'utiliser obj.néant? ou obj == nil et quels sont les avantages des deux.
Réponses
Trop de publicités?Est-il préférable d'utiliser obj.néant? ou obj == nil
C'est exactement le même.Il a exactement les mêmes effets observables de l'extérieur ( pfff ) *et quels sont les avantages des deux.
Si vous aimez les micro-optimisations de tous les objets de retour d'
false
de la.nil?
message, sauf pour l'objetnil
lui-même, tandis que l'objet à l'aide de l'==
message d'effectuer un micro comparaison avec l'autre objet de déterminer si c'est le même objet.* Voir les commentaires.
Dans de nombreux cas, aucun des deux, il suffit de tester la valeur boolean valeur de vérité de
Bien que les deux opérations sont très différents, je suis sûr qu'ils vont toujours de produire le même résultat, au moins jusqu'à ce que quelqu'un sur le bord de quelque chose décide de remplacer l'Objet de l' #nil?
méthode. (On appelle l' #nil?
méthode héritée de l'Objet ou substituée en NilClass
et on compare à l'encontre de l' nil
singleton.)
Je voudrais suggérer que, dans le doute, vous allez une troisième voie, en fait, et il suffit de tester la valeur de vérité d'une expression.
Donc, if x
et pas if x == nil
ou if x.nil?
, afin de disposer de ce test DTRT lorsque la valeur de l'expression est fausse. En travaillant de cette façon peut aussi aider à éviter tentant de quelqu'un pour définir FalseClass#nil?
comme vrai.
Je me retrouve pas à l'aide de .nil?
quand vous pouvez le faire:
unless obj
// do work
end
C'est en fait plus lentement à l'aide de .nil?
mais pas sensiblement. .nil?
est juste une méthode pour vérifier si cet objet est égale à zéro, d'autres que l'attrait visuel et très peu de performance, il faut il n'y a pas de différence.