2014-02-03 9 views
2

Можно ли использовать мета атрибуты MooseX с Moops?Использовать мета атрибуты MooseX с Moops

Рассмотрим Муз пример кода:

use v5.14; 
use strict; 
use warnings; 

package TraitTest; 
use Moose; 
with 'MooseX::Getopt'; 
has opt1 => (
    traits => ['Getopt'], 
    is => 'ro', 
    isa => 'Bool', 
    cmd_aliases => ['o'] 
); 
1; 
package main; 
print TraitTest->new_with_options()->opt1 ? "yes\n" : "no\n"; 

Я пытался превратить это Moops так: классы

use v5.14; 
use strict; 
use warnings; 

use Moops; 
class TraitTest 
with MooseX::Getopt 
{ 

    has opt1 => (
# metaclass => 'Getopt', # also not working 
    traits => ['Getopt'], 
    is => 'ro', 
    isa => 'Bool', 
    cmd_aliases => ['o'] 
); 
} 
print TraitTest->new_with_options()->opt1 ? "yes\n" : "no\n"; 

ответ

2

Moops подкрепляются Moo, не Moose по умолчанию. Таким образом, расширения MooseX обычно не работают.

Однако, можно использовать Moose вместо Moo:

class TraitTest with MooseX::Getopt using Moose { 
    ... 
} 
+0

Да, я читал об 'использовании Moose' в документации. Я подумал, что возможно использовать бэкэнд 'Moo', так как есть' MooX :: late'. Я бы очень хотел использовать 'Moo' вместе с' MooseX :: Getopt' - как вы думаете, было бы возможно его портировать? – sschober

+0

Вы можете попробовать [MooX :: Options] (https://metacpan.org/pod/MooX::Options), который похож на (но не такой, как) MooseX :: Getopt, и работает с Moo. (До самого последнего выпуска Moops он не работал с Moops, но теперь он делает это.) – tobyink

+0

Есть ли способ установить Moose как по умолчанию вместо Moo? –

 Смежные вопросы

  • Нет связанных вопросов^_^