2014-03-07 3 views
5

게으른 속성 중 하나가 설정되었는지 확인하는 방법을 찾으려합니다. Moose :: Meta :: Attribute클래스 :: MOP :: Attribute에 대한 문서를 모두 살펴본 결과 get_valuehas_value 메서드가 표시되었지만 제대로 작동하지 않는 것 같습니다.무스 - 게으른 속성이 설정되었는지 확인합니다.

$attr->has_value($instance) 

을하지만 $ 예는 무엇인가 :

get_value에 대한 문서를 말한다? 객체를 사용하려고했지만 오류가 반환됩니다.

"You must pass a package name and it cannot be blessed.."

도움이 되었습니까?

+0

'$ instance'가 개체 여야합니다. 더 많은 코드를 보지 않으면 무엇을 잘못하고 있는지 알기가 어렵습니다. –

+0

명확히 해주셔서 감사합니다. 실제로 $ 인스턴스로 내 개체를 사용하여 작업, 그것은 단지 시간의 진정한 100 %를 반환했다. 그러나 그것은 다른 문제로 보입니다, 그래서 나는 다른 질문으로 그것을 물어볼 것입니다. – Ryan

답변

5

아마도 속성에 대한 술어가 필요합니다. 예 :

has foo => (
    is  => 'rw', 
    lazy  => 1, 
    predicate => 'has_foo', 
); 
+0

이것은 내 DB 상호 작용 코드를위한 것입니다. 그래서 모든 catch-all (모든 단일 게으른 속성에 대한 조건문을 설정하는 것은 불행합니다 ...)을 기대했습니다. 그러나 이것이 내가 묻는 질문에 대한 최상의 대답이기 때문에, 나는 너에게 감사하고 그것을 받아 들일 것이다. – Ryan

+0

당신은 MooseX :: AttributeShortcuts를보고 싶을 것입니다. 구체적으로 'is => "rwp", is is> "lazy", 그리고'predicate => 1 '옵션 ... YMMV. – RsrchBoy