0

ローカル変数は宣言されたスコープに制限され、クラスが存在する限りインスタンス変数が存在することは理解していますが、クラススコープでローカル変数をプレフィックスなしで宣言するとどうなり@ますか? を使用してインスタンス変数として宣言していなくても、暗黙のうちにインスタンス変数ではない@でしょうか。

4

2 に答える 2

2

インスタンス変数は、クラスが存在する限り存在します

それらは、オブジェクトが存在する限り存在します。インスタンス変数は、クラスごとではなく、オブジェクトごとです。

プレフィックス @ を付けずにクラス スコープでローカル変数を宣言するとどうなりますか?

def次に、変数はクラス定義内のスコープ内にありますが、新しいスコープが導入されるため、そのクラス定義内の s 内にはありません。

@ を使用してインスタンス変数として宣言していなくても、それは暗黙のうちにインスタンス変数になりませんか?

いいえ。

define_methodメソッドを作成する代わりにを使用defすると、メソッド内でローカル変数にアクセスできますが、変数は (オブジェクトごとに 1 回ではなく) 1 回しか存在しないため、その場合はインスタンス変数よりもクラス変数のように機能します。また、そのように使用する正当な理由も思いつきません。

于 2012-12-17T17:50:42.423 に答える
1

@ を使用すると、作成するオブジェクトのインスタンス変数になります。そのオブジェクトで何かをしているときに、ローカル変数を設定できますが、使用すると消えます。オブジェクトが存在する限り、インスタンス変数は残ります。

于 2012-12-17T17:54:49.217 に答える