2011-10-19 1 views
0

은 내가 함수 호출 주어진 true 또는 false로 설정하는 부울 기본 유형을 카레 수 있다고 생각하지만, 내가부울 유형에 대해 내장 함수를 어떻게 카레합니다 (그리고 1 또는 0로 설정합니까?).

이 특성으로 업데이트 예상하는 방법 작동하지 않는 것

has 'Lock' => ( 
     is => 'ro', 
     isa => 'Bool', 
     traits => ['Bool'], 
     default => 0 , 
     reader => 'isLocked', 
     handles => { 
      lock  => [ set => 1 ], 
      unlock => [ set => 0 ], 
      flip  => 'toggle', 

     } 
); 
+0

질문에 대한 답변을 업데이트하지 마십시오; 그들은 당신의 질문을 다른 나라들에 비해 덜 유용하게 만듭니다. – darch

+0

그것이 문제였던 것은 내가 설정을 사용하는 방식이었던 특성을 놓치지 않았다는 것을 의미하지는 않았다. 사실 - 그게 내 실제에서는 문제가 아니기 때문에 그다지 효과가 없었다. 하지만 고마워! – qodeninja

답변

6

나는 생각한다 여기 Moose::Meta::Attribute::Native::Trait::Bool을 찾고 있습니다 (traits => ['Bool']으로 지정).

가지고있는 것이 모두 isa => 'Bool', default => 0 인 경우 특성에 개체가 들어 있지 않습니다. 숫자 0에 메서드를 호출 할 수 없으므로 handles은 기본 특성의 도움 없이는 아무 것도 할 수 없습니다.

Moose::Meta::Attribute::Native : "네이티브 위임을 사용하면 네이티브 Perl 데이터 구조를 개체 인 것처럼 위임 할 수 있습니다." 즉, handles을 사용하면 특성에 저장된 메서드에서 메서드를 호출하는 것 외에도 특성에서 특정 작업을 수행하는 특수 메서드가 생성됩니다. BOOL 기본 특성은 당신이 할 수있는 의미, set, unsettoggle 방법을 제공 당신이 원하는 :

has 'Lock' => ( 
    is => 'ro', 
    isa => 'Bool', 
    traits => ['Bool'], 
    default => 0 , 
    reader => 'isLocked', 
    handles => { 
     lock  => 'set', 
     unlock => 'unset', 
     flip  => 'toggle', 
    } 
); 
관련 문제