Perl Moose 읽기 전용 속성이 신규 호출로 설정되는 것을 어떻게 방지 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1814046

문제

신규 전화로 초기화 할 수없는 무스에서 읽기 전용 속성을 간단히 선언하고 싶습니다. 따라서 다음을 선언 한 후 :

package SOD::KuuAnalyze::ProdId;

use Moose;

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

1;

나는 다음과 같은 일을 원하지 않습니다.

my $prodid = SOD::KuuAnalyze::ProdId->new(users => ["one", "two"]);
도움이 되었습니까?

해결책

사용 init_arg 속성 구성 ( "생성자 매개 변수"참조 무스 :: 매뉴얼 :: 속성):

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

has 'users' => (
    isa => 'ArrayRef[Str]', is => "ro",
    init_arg => undef,    # do not allow in constructor
);
1;

다른 팁

어때

package SOD::KuuAnalyze::ProdId;

use Moose;

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

설정 init_arg 에게 undef 생성자로부터 속성을 설정하지 않기 위해 필요한 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top