0
我有几个包:如何从一个属性中生成的哈希构造一个驼鹿对象?
package FOO;
use Moose;
has 'obj' => (is=>'ro');
sub hash {
my $self = shift;
return $self->make_hash($self->obj};
}
和另一封装延伸FOO:
package FOOBAR;
use Moose;
extends 'FOO';
has [qw/val1 val2/] => (is => 'rw');
sub BUILD {
my ($self) = @_;
$self->val1($self->hash->{val1});
$self->val2($self->hash->{val2});
}
基本上我想要做的FOOBAR->new(obj=>$obj);
和使用来自$obj
生成一个散列来填充FOOBAR
指定的属性( 〜20左右属性)
正在使用'BUILD'这样的解决方法吗?
谢谢,但我正在使用哈希($ self->哈希,这对construnt a有一些魔法,从$ self-> obj),并且我不能委托给哈希中的键? – 2012-01-29 09:57:55
@simon_,你说这是一个散列,但你继续称它为'$ obj'并且说散列实际上是从它构造而来的。哪一个?如果'$ obj'是一个对象,请使用委托。在代表中放置你需要的任何“魔法”。 (例如'val1 => sub {my $ self = shift; my $ obj = $ self-> obj; ...}') – ikegami 2012-01-29 10:04:45
@simon_,答案已更新。 – ikegami 2012-01-29 10:12:38