Rubyで初期化されていないインスタンス変数がnilを返すのに、初期化されていないクラス変数でエラーが発生するのはなぜですか?

enocom

Rubyではnil、初期化されていないクラス変数がNameErrorを生成するのに、初期化されていないインスタンス変数が返されるのはなぜですか?

比較:

@some_uninitialized_variable # => nil

そして:

@@some_uninitialized_class_variable # => NameError
Cary Swoveland

私の見解は次のとおりです。

  • 初期化されていないローカル変数は、Rubyがローカル変数であるか存在しないメソッドであるかを知らないため、名前エラーを返します。

  • 初期化されていないクラス変数がnil定義されていないときに返される場合、変数が実際にnil遠い祖先によって値を割り当てられたときに、厄介なバグにつながる可能性がありますつまり、これはコーダーを保護していると思います。

  • nil頻繁に使用される機能の場合、インスタンス変数は初期化されていないときにデフォルトになります@a = @a || []

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ