私はvar.nil?
しばらく使用してきましたが、それは私のコード全体にあります。突然、私はそれの後にundefined local variable or method
変数を取得しています.nil?
。
どうしたの?.nil?
壊れていますか?IRB オンラインで試してみて、自分の環境にないことを確認しました。次のように入力できるはずです。
me.nil?
変数が定義されていない場合、それはtrueとして返されるはずです。それが要点ですが、私はundefined local variable or method me for main:Object
多分私はnil?
間違っていて、次のようなものを使用する必要があります:
defined?(me) == nil
.nil?
既存のオブジェクトでのみ使用できますか? これは私が理解した方法ではありませんでした。ルビーのドキュメントには、次のようにさえ書かれています。
nil.nil? -> true
<anything_else>.nil? -> false
ここで夢中になります。
より詳しい情報
私はできることを理解しています:
unless defined? me
do something
しかし、同等のものは次のif me.nil?
とおりです。
if defined?(me) == nil?
右?他に方法はありませんか?
今、私は自分の知識だけでなく、正気を疑っています:)
結論:
わかりました。.nil?
存在しないインスタンス変数に対しても機能します。存在しないハッシュまたは配列キーでも機能しますが、存在しないローカル変数では機能しません。私にとって、これは大きな間違いです。おそらく最もよく使用されるアイテム (ローカル変数) を除いて、ほとんどすべてで機能することを覚えておく必要があります。
私の結論は、これはローカル変数がRubyのメソッドと混同される可能性があるという事実と関係があります.それらを区切る構文には何もありません$
.変数であり、メソッドと混同されることはありません)。