Ruby Singleton属性默认值

时间:2013-07-09 14:09:52

标签: ruby singleton

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

class Foo
  include Singleton

  # def initialize
  #   puts "Initialized!"
  # end  

  singleton_class.class_eval do
    attr_accessor :bar
  end
end

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

1 个答案:

答案 0 :(得分: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