Rubyではnil
、初期化されていないクラス変数がNameError
?を生成するのに、初期化されていないインスタンス変数が返されるのはなぜですか?
比較:
@some_uninitialized_variable # => nil
そして:
@@some_uninitialized_class_variable # => NameError
私の見解は次のとおりです。
初期化されていないローカル変数は、Rubyがローカル変数であるか存在しないメソッドであるかを知らないため、名前エラーを返します。
初期化されていないクラス変数がnil
定義されていないときに返される場合、変数が実際にnil
遠い祖先によって値を割り当てられたときに、厄介なバグにつながる可能性があります。つまり、これはコーダーを保護していると思います。
nil
頻繁に使用される機能の場合、インスタンス変数は初期化されていないときにデフォルトになります@a = @a || []
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加