0

rubyのクラス変数が静的変数のように動作しないのはなぜですか?MyTest.new.valueの代わりにMytest.valueを実行するだけでアクセスするにはどうすればよいですか?

class MyTest
  @@value=0

  def value
    @@value
  end
end

puts MyTest.new.value
4

2 に答える 2

7

あなたは次のようなものが欲しい

class MyTest
  @@value = 0
  def self.value
    @@value
  end
end

self、クラスが直接呼び出すクラスメソッドになります。

于 2012-06-09T02:47:53.210 に答える
2

[編集]コメントを読んで、なぜこれをしないのかを知ってください。

class MyTest
  @value=0

  class << self
    attr_accessor :value
  end
end

代わりに、本当にそのような方法で変数にアクセスする必要がある場合は、単純なモジュールをお勧めします。

それ以外の場合は、Joshua Cheekが元の投稿にコメントしたように、クラスにインスタンス変数を使用し、アクセサーを用意する必要があります。

于 2012-06-09T02:44:45.807 に答える