2
我試圖添加到Class1
Resource1
屬性值爲test
。 但它不起作用。我的代碼有什麼問題?如何使用perl AUTOLOAD和Moose :: Meta :: Class動態添加一個屬性(如果它不存在)?
package Class1;
use Moose;
sub AUTOLOAD {
my $self = shift;
our $AUTOLOAD;
my $unknown_method_name = (split(/::/, $AUTOLOAD))[-1];
require Class2; # generator class
Class2->generate_one($self, $unknown_method_name);
}
package Class2;
use Moose;
sub generate_one {
my ($self, $object, $p) = @_;
$object->meta->add_attribute(
$p => {
is => 'ro',
default => 'test',
lazy => 1
}
);
}
package main;
my $a = Class1->new;
warn $a->Resource1; # must be 'test' but showing Moose::Meta::Attribute=HASH(0x333ca10)
解釋幾句話是適當的位置 – Borodin