重複の可能性:
Rubyで@@ variableはどういう意味ですか?
ダブル'@'でオブジェクトを宣言する場合の違いは何ですか
@@lexicon = Lexicon.new()
そして、Rubyで単一の「@」を使用してオブジェクトを宣言しますか?
@lexicon = Lexicon.new()
重複の可能性:
Rubyで@@ variableはどういう意味ですか?
ダブル'@'でオブジェクトを宣言する場合の違いは何ですか
@@lexicon = Lexicon.new()
そして、Rubyで単一の「@」を使用してオブジェクトを宣言しますか?
@lexicon = Lexicon.new()
違いは、最初の変数がクラス変数で、2番目の変数がインスタンス変数であるということです。
インスタンス変数は、オブジェクトのそのインスタンスでのみ使用できます。すなわち
class Yasin
def foo=(value)
@foo = value
end
def foo
@foo
end
end
yasin = Yasin.new
yasin.foo=1
yasin.foo #=> 1
yasin_2 = Yasin.new
yasin_2.foo #> nil
クラス変数は、クラス変数が定義されたクラス(およびサブクラス、iirc)のすべてのインスタンスで使用できます。
class Yasin
def foo=(value)
@@foo = value
end
def foo
@@foo
end
end
yasin = Yasin.new
yasin.foo=1
yasin.foo #=> 1
yasin_2 = Yasin.new
yasin_2.foo #=> 1