我正在尝试创建一个使用 Singleton 模块的类:
class Foo
include Singleton
# def initialize
# puts "Initialized!"
# end
singleton_class.class_eval do
attr_accessor :bar
end
end
这里的问题是 bar
没有默认/初始值。我在我的类中添加了一个 initialize
方法,希望它会被调用一次,但事实似乎并非如此。加载此类时确保 bar
具有值的正确方法是什么?
最佳答案
当您实现它时,@bar
的访问器是类 Foo
的方法,因此您已将 @bar
定义为类实例Foo
的变量,而不是 Foo
的实例:
class Foo
include Singleton
@bar = 0
singleton_class.class_eval do
attr_accessor :bar
end
end
Foo.bar
# => 0
关于Ruby 单例属性默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17550465/