2

是否可以将 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";
4

1 回答 1

2

Moops 类默认由 Moo 支持,而不是 Moose。因此 MooseX 扩展通常不会起作用。

但是,可以使用 Moose 代替 Moo:

class TraitTest with MooseX::Getopt using Moose {
    ...
}
于 2014-02-03T18:09:02.657 回答