2011-03-07 74 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