在没有ActiveRecord的情况下在属性上设置默认值的最佳方法?

jco*_*lum 15 ruby

我认为这个问题(如何在ruby中进行attr_accessor_with_default?)回答了我的问题,但我没有使用ActiveRecord,after_initialize依赖于它.

实现默认值的Ruby最佳实践是attr_accessor什么?是否是最接近于它的文档?我应该停止使用,attr_accessor因为它是私人的吗?

Phr*_*ogz 26

class Foo
  # class-level instance variable

  # setting initial value (optional)
  @class_var = 42  

  # making getter/setter methods on the class itself
  class << self
    attr_accessor :class_var
  end

  # instance-level variable getter/setter methods
  attr_accessor :inst_var
  def initialize
    # setting initial value (optional)
    @inst_var = 17
  end
end

p Foo.class_var
#=> 42
Foo.class_var = 99
p Foo.class_var
#=> 99

f1 = Foo.new
f2 = Foo.new
f2.inst_var = 1
p [f1.inst_var, f2.inst_var]
#=> [17,1]
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,谢谢.那么`attr_accessor`是私有的呢?来自C#的特殊之处就是Ruby让我使用像这样私有的东西.这就像私人只是一个建议.奇. (2认同)