Как вы называете класс / пакет / модуль как - PullRequest
0 голосов
/ 04 августа 2010

Как бы вы назвали пакет, единственной целью которого было расширение другого модуля, чтобы вы могли применять к нему роли? Мне нужен пакет, который расширяет (подклассы) Template :: Context с Moose Так что я могу затем создать роли и черты, чтобы применить к нему, но я не знаю, что назвать этот пакет (класс). Любой совет?

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

Начиная с его специфической роли-лося, у меня будет имя Мус.Template :: Context :: Moosified.Или Template :: Context :: WithAntlers.

Но иметь промежуточный подкласс, чтобы вы могли прикрепить к нему роли, странно.Вы можете пропустить этого посредника и просто объявить составные классы напрямую.

package Template::Context::ForBreakfast;

use Moose;
extends "Template::Context";
with "Bacon", "Eggs", "Toast";

Имя класса должно выпадать из состава ролей.

1 голос
/ 10 августа 2010

Я не уверен, что это одобрено, но вы всегда можете попробовать , применяя роль напрямую.

package R; 
use Moose::Role; 
sub f { say 42 } 

package main; 
use URI;
R->meta->apply( Moose::Meta::Class->initialize( 'URI' ) ); 
URI->new->f

Конечно, это требует некоторого подслащивания, абсолютно не гарантирует долгую работусрок, и, вероятно, совершенно не поддерживается.Тем не менее, именно так эффективно работает СС без присмотра.

...