在Moose中,如果角色使用默认值定义属性,如何在我的消费类中更改该默认值?

ale*_*exk 4 perl moose moo

我的Moose课程消耗了一个我不允许改变的角色.该角色定义具有默认值的属性.我需要我的类具有该属性,但具有不同的默认值.

那可能吗?

我能想到的就是用我自己的一些代码包围"new"方法,如下所示:

around new => sub {
    my ($orig, $self) = (shift, shift);
    return $self->$orig(@_, the_attribute => $new_value);
}
Run Code Online (Sandbox Code Playgroud)

但我不确定周围的新品是否有效,并且也希望更优雅.

ale*_*exk 8

更好,更简单的方法是在你的课堂上写这个:

has '+the_attribute' => (
    default => sub{1},
}
Run Code Online (Sandbox Code Playgroud)

has使用a +,您只能覆盖属性的特定属性.

比周围的BUILDARGS简单得多.