Perl Moose 읽기 전용 속성이 신규 호출로 설정되는 것을 어떻게 방지 할 수 있습니까?
-
06-07-2019 - |
문제
신규 전화로 초기화 할 수없는 무스에서 읽기 전용 속성을 간단히 선언하고 싶습니다. 따라서 다음을 선언 한 후 :
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
생성자로부터 속성을 설정하지 않기 위해 필요한 것 같습니다.
제휴하지 않습니다 StackOverflow