5

Rails のソース コードを参照していると、次の行が含まれています。

@@autoloads = {}

@@Ruby での意味は?

4

3 に答える 3

2

これは、インスタンス プロパティ (そのクラスからインスタンス化されたオブジェクトごとに存在するプロパティ) ではなく、クラス プロパティ (クラスに名前空間が割り当てられたプロパティ) にアクセスすることを意味します。

あなたの例では@@autoloads、プログラムの長さの間持続します。

class TestObj
  @@prop = 0
  def get_prop
      @@prop
  end

  def increment_prop
    @@prop += 1   
  end
end

a = TestObj.new
b = TestObj.new

a.increment_prop 

puts b.get_prop # 1

コードパッド

于 2012-06-21T05:17:51.260 に答える
1

@@ は、クラス変数を示すだけです。

クラス変数は、クラスのすべてのインスタンス間で共有される変数です。これは、このクラスからインスタンス化されたすべてのオブジェクトに対して、1 つの変数値のみが存在することを意味します。

クラス変数のもう 1 つの考え方は、単一のクラスのコンテキスト内のグローバル変数です。

于 2012-06-21T05:30:17.790 に答える
1

@@ はクラス変数を識別します。

于 2012-06-21T05:18:03.780 に答える