我正在尝试创建一个使用Singleton模块的类:
class Foo
include Singleton
# def initialize
# puts "Initialized!"
# end
singleton_class.class_eval do
attr_accessor :bar
end
end
这里的问题是bar
没有默认值/初始值。我已经在我的类中添加了一个initialize
方法,希望它可以被调用一次,但事实并非如此。在加载此类时,确保bar
具有值的正确方法是什么?
答案 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