rubyのクラス変数が静的変数のように動作しないのはなぜですか?MyTest.new.valueの代わりにMytest.valueを実行するだけでアクセスするにはどうすればよいですか?
class MyTest
@@value=0
def value
@@value
end
end
puts MyTest.new.value
あなたは次のようなものが欲しい
class MyTest
@@value = 0
def self.value
@@value
end
end
はself
、クラスが直接呼び出すクラスメソッドになります。
[編集]コメントを読んで、なぜこれをしないのかを知ってください。
class MyTest
@value=0
class << self
attr_accessor :value
end
end
代わりに、本当にそのような方法で変数にアクセスする必要がある場合は、単純なモジュールをお勧めします。
それ以外の場合は、Joshua Cheekが元の投稿にコメントしたように、クラスにインスタンス変数を使用し、アクセサーを用意する必要があります。