2011-03-24 2 views
3

확장 레시피 3 또는 4과 같은 작업을 수행했다고 가정 해 보겠습니다. 따라서 MyApp :: UseMyBase와 같은 클래스를 사용하면 '무스 사용'대신 사용할 수 있습니다. 정상적인 무스 사용 코드에서. 하지만 MooseX :: Declare를 사용할 때 MyApp :: UseMyBase를 어떻게 사용합니까?MooseX :: Declare를 Moose의 하위 클래스와 함께 어떻게 사용합니까?

나는 유망한 MooseX :: Declare :: Syntax :: MooseSetup :: import_symbols_from()을 볼 수는 있지만 반환 값을 변경하고 MyApp에서 MooseX :: Declare를 사용하고 가져 오는 방법을 모른다. 무스 대신 UseMyBase.

답변

3

MooseX::Declare::Syntax::Keyword::Class을 서브 클래스 화해야하고, 가능하다면 MooseX::Declare::Syntax::Keyword::Role도 서브 클래스 화해야합니다 (원하는 경우). import_symbols_from을 사용자 정의하십시오.

그런 다음 MooseX::Declare을 확장하여 실제로 수정 된 키워드를 제공하십시오. 이를 위해서는 keywords 메서드를 사용자 정의해야합니다. 당신도 사용자 정의 키워드의 인스턴스로에 의해 반환 된 ClassKeyword 및 RoleKeyword 인스턴스를 교체하거나 당신이

use MyMooseX::Declare; 
class Foo { ... } # the modified class keyword 

또는

use MyMooseX::Declare; 
class Foo { ... } # the default class keyword 
myclass Bar { ... } # the modified class keyword 
할지 여부에 따라 다른 식별자에서 새 키워드를 설정 할 수 있습니다

CatalystX::Declare에는 이전 방법이 포함되어 있지만 요청하는 것보다 훨씬 복잡합니다. 나는 이것에 대한 간단한 예를 알지 못하지만, 다른 나라와 당신의 솔루션을 공유하려는 느낌이 들었을 때를 대비해 향상된 문서를 포함하고 싶습니다.

관련 문제