1
내에서 메소드를 호출하는 방법은 설정 속성을 가진 클래스가 있습니다.빌더
sub _load {
# Assuming laziness is implemented somewhere else.
my $self = shift;
$self->{_data} = retrieve $self->_file;
$self->refresh; # which does something with $self->{_data}
return $self->{_data};
}
하지만 무스에서이 작업을 수행 할 수있는 '깨끗한'방법을 알아낼 수 없습니다 구식 펄 OO에서
, 나는 다음과 같은 일을 할 것입니다.나는 다음을 고려해 보았다.하지만 꽤 못 생겼고 더 나은 방법이 있어야한다고 생각한다. 내가 _data
읽기 - 쓰기를 한 경우
- , 나는 잠재적 접근에 데이터를 기록 무스 다시 접근에 쓰기위한 방법은 다음 접근에서 값을 반환 호출 할 수 있습니다.
- 평범한 방법으로 바꾸면 다른 속성을 정의해야합니다 (예 :
_raw_data
). 데이터를 저장하려면refresh()
을 수정하고 다른 모든 것은_data()
을 사용하십시오. - 캡슐화를 위반하고 기본
$self->{_data}
에 직접 액세스하십시오.
나는 after '_load' => \&refresh;
을 시도했지만 그저 무한 루프를 만들었습니다. 단지 작가/접근 방법에 명시 적으로 생성자에 전달하거나 전달 된 값에 - 기본/내장 값에서 작동하지 않는 트리거를 제외하고
has _data => (
is => 'ro',
lazy => 1,
builder => '_load',
trigger => sub { shift->refresh },
);
: