7

new の呼び出しで初期化できない Moose の読み取り専用属性を単純に宣言したいと思います。したがって、次のように宣言した後:

package SOD::KuuAnalyze::ProdId;

use Moose;

has 'users' => (isa => 'ArrayRef[Str]', is => "ro");

1;

私は次のことをしたくありません:

my $prodid = SOD::KuuAnalyze::ProdId->new(users => ["one", "two"]);
4

2 に答える 2

15

属性設定を使用します ( Moose::Manual::Attributesinit_argの「コンストラクターのパラメーター」を参照してください):

package SOD::KuuAnalyze::ProdId;
use Moose;

has 'users' => (
    isa => 'ArrayRef[Str]', is => "ro",
    init_arg => undef,    # do not allow in constructor
);
1;
于 2009-11-28T23:55:03.657 に答える
4

どうですか

package SOD::KuuAnalyze::ProdId;

use Moose;

has 'users' => ( isa => 'ArrayRef[Str]', is => 'ro', init_arg => undef, default => sub { [ 'one', 'two' ] } );

コンストラクターからの属性の設定を禁止するには、をに設定init_argするundef必要があるようです。

于 2009-11-28T23:45:06.390 に答える