Ich arbeite durch die Ruby on Rails-Tutorial, und ich bin neugierig auf diesen Codeblock:Unterschied zwischen. Nil? und == null
if remember_digest.nil?
false
else
BCrypt::Password.new(remember_digest).is_password?(remember_token)
end
gibt es einen Unterschied zwischen if remember_digest.nil?
und if remember_digest == nil
, oder ist dies nur der Autors Vorliebe?
Während das Ergebnis das gleiche sein könnte, möchte ich erwähnen, dass '== nil' in Ruby ungewöhnlich ist,' nil? 'Ist ein häufigeres Ruby-Idiom. Und da 'nil'' falsey' ist, könntest du auch 'if remember_digest' schreiben (ohne weitere Methodenaufrufe) – spickermann
Ich stimme @spickermann zu, es gibt auch einen tatsächlichen Unterschied' Objekt # nil? 'Antwortet einfach mit' Qfalse' und ' NilClass # nil? 'Ist die einzige Klasse, die dies mit' Qtrue' überschreibt, wobei ''=' 'tatsächlich einen Vergleich durchführt, so dass das Ergebnis, obwohl das Ergebnis dasselbe ist, eine geringere Auswirkung auf den Interpreter hat (wenn auch extrem minimal). – engineersmnky
@engineersmnky 'Qfalse' und solche sind wirklich nur relevant als C Internals. 'NilClass' ('nil') und' FalseClass' ('false') sind ihre tatsächlichen Darstellungen in Ruby. – tadman