2010-11-12 50 views
2

我寫延伸另一個麋對象類駝鹿對象類:構建一個擴展的駝鹿對象類的順序是什麼?

package MySubClass; 
use Moose; 
extends MySuperClass; 

我有我想自動建立在對象實例化一個屬性:

has 'id' => (
    is  => 'ro', 
    isa  => 'Str', 
    builder => '_build_id', 
    init_arg => undef, 
); 

sub _build_id { 
my $self = shift; 
# both ssn and bnn are attributes of MySuperClass 
return $self->ssn . $self->bnn; 
} 

這不起作用除非我將id設置爲懶惰。爲什麼?

extend建築物是如何完成的?

回答

4

報價Moose::Manual::Attributes on Laziness

首先,如果此 屬性的默認值依賴於某些其他 屬性,那麼這個屬性必須是 懶惰。在構建對象期間, 默認值不會以 可預測的順序生成,因此在生成默認值時填充的某些其他屬性爲 時無法計數 。

相關問題