1
BUILDARGSを使わずにhashrefから完全なオブジェクト階層を作成したいと思います。それを行うための可能な簡単な方法はありますか?BUILDARGSを使わずにperl Mooseで属性オブジェクトを自動的に作成
#!/usr/bin/perl
use v5.14;
use strict;
use warnings;
{
package Obj1;
use v5.14;
use strict;
use warnings;
use Moose;
has 'backend' => (
is => 'ro',
isa => 'Obj2',
required => 1,
);
no Moose;
__PACKAGE__->meta->make_immutable;
1;
}
{
package Obj2;
use v5.14;
use strict;
use warnings;
use Moose;
has 'flag' => (
is => 'ro',
isa => 'Bool',
required => 1,
);
no Moose;
__PACKAGE__->meta->make_immutable;
1;
}
my $data = {
backend => {
flag => 1
}
};
my $s = Obj1->new($data);
say $s->backend->flag;
これまでのところ、私はBUILDARGSを使用していましたが、これはやや自動化できるでしょうか?ここでは簡単な例を示します。私のコードでは階層がより深いので、クラスごとにBUILDARGSを書くのを止めれば本当にうれしいでしょう。