2011-03-07 76 views
1

是否有定义attr_initialize类的方法,其行为类似于下面的一些流行的Ruby宝石:Ruby:有没有方法attr_initialize的gem?

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

将EVAL到的东西相当于:

attr_accessor :attr1 

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

回答

2

Our attr_extras已接近。

它故意不处理默认参数,可选参数或多个赋值 - 如果您需要,您应该定义一个常规方法。

1

你不需要这一点。只要写下这样的东西:

attr_accessor :attr1, :attr2, :attr3 

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

对我来说,它看起来不像太多的代码。

+0

你是对的,它没有那么多的代码。 def attr1; @ attr1结束与attr_reader:attr1也没有太多的代码。所以我会从这样的功能中受益,因为代码在意图方面变得更清晰 – Alexey 2011-03-09 12:10:52