2
:.nil?そして、私はRailsのチュートリアルにルビーを通じて働いている、と私は、このコードブロックについて興味== nilを
if remember_digest.nil?
false
else
BCrypt::Password.new(remember_digest).is_password?(remember_token)
end
はif remember_digest.nil?
とif remember_digest == nil
違いがあり、またはこれは単に作者の好みですか?
結果は同じですが、 '== nil'はRubyでは珍しいですが、' nil? 'はもっと一般的なRubyイディオムです。また、 'nil'は' falsey'なので、 'remember_digest'を書くこともできます(それ以上のメソッド呼び出しはありません) – spickermann
@spickermannにも同意します。実際の違いは' Object#nil? 'で' Qfalse'と ' NilClass#nil? 'はこれを' Qtrue'で上書きする唯一のクラスです。 '=='は実際に比較を行いますが、結果は同じですが、前者はインタプリタにはあまり影響しません。 – engineersmnky
@engineersmnky 'Qfalse'などは実際にはCの内部構造としてのみ関連しています。 'NilClass'(' nil')と 'FalseClass'(' false')は実際のRuby表現です。 – tadman