2
test
の値がClass1
Resource1
の属性に追加しようとしています。 しかし、それは動作していません。私のコードで何が間違っていますか?属性が存在しない場合、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