1

我正在尝试创建一个使用 Singleton 模块的类:

class Foo
  include Singleton

  # def initialize
  #   puts "Initialized!"
  # end  

  singleton_class.class_eval do
    attr_accessor :bar
  end
end

这里的问题是bar没有默认/初始值。我在initialize我的类中添加了一个方法,希望它会被调用一次,但情况似乎并非如此。bar加载此类时确保具有值的正确方法是什么?

4

1 回答 1

3

当你实现它时,访问器@bar是类的方法Foo,因此你定义@bar为类实例变量Foo,而不是实例Foo

class Foo
  include Singleton
  @bar = 0
  singleton_class.class_eval do
    attr_accessor :bar
  end
end

Foo.bar
# => 0
于 2013-07-09T14:13:55.640 回答