Ruby 单例属性默认值

标签 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 具有值的正确方法是什么?

最佳答案

当您实现它时,@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/

相关文章:

android - Facebook session 单例使用

java - 带参数的单一实例化

iphone - 创建新类时 Xcode 构建错误

ruby - 删除递归哈希数组中包含特定键=>值的哈希

ruby roo 从解析中删除列

ruby方法缓存性能

java - java中SomeObject.class的含义是什么?

ruby - Ruby 中的 "=~"运算符是什么?

ruby - 是否可以在回形针中将附件设为可选?

java - 使用单例访问 "constant global array"是否正确?