在 Moose 中,如何为子类中的超类指定构造函数参数?
In Moose, how to specify constructor arguments for the superclass in a subclass?
我有一只 Moose class,它具有一些属性 (x
、y
、z
)。我subclass它,对于subclass,x
总是3。我如何在subclass中指定这个?
我以前和 Moo 一起工作过,但好像是一样的。您只需要在子类中使用 +
声明 属性 来覆盖之前的声明。
package Foo;
use Moose;
has 'a' => (
is => 'rw',
isa => 'Num',
);
has 'b' => (
is => 'rw',
isa => 'Num',
);
has 'c' => (
is => 'rw',
isa => 'Num',
);
package My::Foo;
use Moose;
extends 'Foo';
has '+a' => (
default => 3,
);
可以使用 BUILDARGS
.
around BUILDARGS => sub {
my $orig = shift;
my $class = shift;
return $class->$orig(@_, x => 3 );
};
我有一只 Moose class,它具有一些属性 (x
、y
、z
)。我subclass它,对于subclass,x
总是3。我如何在subclass中指定这个?
我以前和 Moo 一起工作过,但好像是一样的。您只需要在子类中使用 +
声明 属性 来覆盖之前的声明。
package Foo;
use Moose;
has 'a' => (
is => 'rw',
isa => 'Num',
);
has 'b' => (
is => 'rw',
isa => 'Num',
);
has 'c' => (
is => 'rw',
isa => 'Num',
);
package My::Foo;
use Moose;
extends 'Foo';
has '+a' => (
default => 3,
);
可以使用 BUILDARGS
.
around BUILDARGS => sub {
my $orig = shift;
my $class = shift;
return $class->$orig(@_, x => 3 );
};