2
Perl/Tk에서는 위젯 용 텍스트 변수를 정의 할 수 있습니다. 값을 보유하는 스칼라에 대한 참조입니다. 누군가 무스 속성을 사용하여 무스 속성을 textvariable (cool!)로 사용하는 방법을 보여주었습니다.큰 사슴 속성 인 Perl/Tk 위젯 textvariable을 업데이트하는 방법은 무엇입니까?
subtype 'TkRef' => as 'ScalarRef';
coerce 'TkRef', from 'Str', via { my $r = $_; return \$r };
has 'some_val' => (is => 'rw', isa => 'TkRef', coerce => 1, default => 'default value');
$mw->Entry(-textvariable => $self->some_val);
$mw->Label(-textvariable => $self->some_val); # will always Show what we type into the entry
을 그러나, 나는 속성에 대한 새 값을 설정할 때, 나는 이런 식으로 역 참조에 있습니다 :
${$self->some_val} = 'blarg'; # dereference
단순히 속성을 설정하면 작동하지 않습니다 이것은 어떻게 작동 참조가 객체의 수명 동안 동일하게 유지되어야하므로 (즉, 속성 값 자체는 변경할 수 없습니다.)
$self->some_val('blarg');
으로 속성을 설정할 가능성을 잃지 않고 멋진 무스 속성 강제 변환 기능을 사용할 수 있습니까? 어떤 종류의 역방향 강제?
이것은 매우 멋지다. 형식 강요는 다른 프로그래밍 언어의 형체가 많은 것을 생각 나게하지만 필자는 Perl을 결국 선택했기 때문에 이것이 내가 원하는 것을 정확하게 수행합니다. 이제 남은 것은 캡슐화하여 모든 변수를 볼 때마다 볼 필요가 없기 때문입니다. – capfan