Moose::Manual::Attributes狀態:爲什麼穆斯的建設者會採取字符串值?
作爲替代使用子程序參考[默認],您可以代替你的屬性提供一個構建器方法: ... 這有幾個優點。首先,它將一大塊代碼移到自己命名的方法中,從而提高了可讀性和代碼組織。
所以,你的屬性可以定義正是如此默認:
has attr => (
is => 'ro',
builder => 'subroutine'
);
sub subroutine {
# figure out and return default value
}
我不明白爲什麼這必須是從默認分開。你不能只傳遞一個指定的子程序嗎?
has attr => (
is => 'ro',
default => \&subroutine
);
並且這不是更好的編程實踐,因爲你保證不會意外地引用一個不存在的子程序嗎?你會用一個邏輯引用而不是一個符號引用來引用這個方法。
那麼,我知道它不是在Perl意義上的參考;我只是想,更好的編程習慣是將真實的參考傳遞給一個命名的子程序,出於我提到的原因。 但是,你是對的;手冊的其餘部分確實說明了爲什麼這種方式是可取的... – skiphoppy 2009-02-18 16:34:07