2013-01-08 56 views
-3

給定訪問者的列表有以下幾種可能嗎?如果可能的話,我將如何爲每個創建構建器方法,我認爲lazy_build屬性會這樣做?請幫助創建訪問器的駝鹿

my @accessors= qw/type duration process/; # used 3 as example but the list is about 50 

foreach my $accessors (@accessors) { 
has $accessors => (
    is   => 'rw', 
    isa  => 'Str', 
    lazy_build => 1, 

); 
} 
+2

你爲什麼不試試? – Borodin

回答

3

是的,這是可能的。這兩個文件記錄工作和微不足道的測試。

由於documented,lazy_build不創建建設者;它指定一個屬性應該被延遲初始化,並且它應該調用名爲_build_${attr_name}的構建器。您必須提供自己的構建方法稱爲_build_type

如果你的屬性都採取同樣的建設者(不太可能,但也許他們這樣做),不說lazy_build。相反,請說lazy => 1, builder => '_build_stuff'並執行_build_stuff以適用於每種情況。但就像我說的那樣,這不太可能;事實上,你可以很容易地在循環中使用它實際上是lazy_build的優點之一。

+0

感謝您的建議。我的149個測試現在通過 – user1885294