Используйте мета-атрибуты MooseX с Moops
Можно ли использовать мета-атрибуты MooseX с Moops?
Рассмотрим пример кода Moose:
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";
1 ответ
Решение
Классы Moops поддерживаются Moo, а не Moose по умолчанию. Таким образом, расширения MooseX обычно не работают.
Тем не менее, вместо Moo можно использовать Moose:
class TraitTest with MooseX::Getopt using Moose {
...
}