Ruby:有没有方法attr_initialize的宝石?

时间:2011-03-07 20:56:13

标签: ruby constructor initializer attr-accessor

是否有一些流行的ruby gem定义了attr_initialize类方法,其行为如下:

attr_initialize :attr1, :@attr2, [:@attr3, 1] do |arg4|
  post_initialization(arg4)
end

将评估为等同于:

attr_accessor :attr1

def initialize(attr1, attr2, attr3 = 1, arg4 = nil)
  @attr1 = attr1
  @attr2 = attr2
  @attr3 = attr3
  post_initialization(arg4)
end

2 个答案:

答案 0 :(得分:2)

我们attr_extras已接近。

它故意不处理默认参数,可选参数或超过赋值 - 如果你想要,你应该只定义一个常规方法。

答案 1 :(得分:1)

你不需要那个。只需写下:

attr_accessor :attr1, :attr2, :attr3

def initialize(*attrs)
  @attr1, @attr2, @attr3 = attrs
  post_initialization attrs.last
end

对我而言,它看起来不像太多代码。