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