4

私はRubyの初心者です。静的変数とインスタンス変数について非常に基本的な質問があります。

class Test

  def self.init
    @@var_static = 1
    @member = 2
  end

  def self.print
    puts "@@var_static: #{@@var_static}"
    puts "@member: #{@member}"
  end

end

Test.init
Test.print

上記のコードで、静的メソッド Test::init 内のメンバー変数 @member の初期化が許可されるのはなぜですか? 私の理解では、 @member を使用すると、クラス Test のインスタンスに関連付けられていないため、エラーがスローされるということでした。しかし、エラーはスローされません。

4

2 に答える 2

3

ただし、クラスオブジェクトのインスタンスであり、他のオブジェクトと同じようにインスタンス変数を持つことができます。

>> Fixnum.class
=> Class

Fixnumクラスは!のインスタンスです。 Class

于 2012-06-18T17:49:58.890 に答える
1

これを説明する良い記事はこちら: http://railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/

于 2012-06-18T18:20:33.073 に答える