我很难弄清楚推送到驼鹿数组的语法(我相信这很明显,我很愚蠢)。这是this question的延续。在我看来,对于我的特定情况,我需要的不仅仅是一个简单的值。尝试使用一种类似驼鹿的方式实现它(也许这是错误的?)但很明显我做得不对。
use Moose::Role;
has 'tid_stack' => (
traits => ['Array'],
is => 'rw',
isa => 'ArrayRef[Str]',
default => sub { [] },
);
around 'process' => sub {
my $orig = shift;
my $self = shift;
my ( $template ) = @_;
$self->tid_stack->push( get_hrtid( $template ) );
$self->$orig(@_)
};发布于 2010-08-15 22:41:08
您误解了traits => ['Array']的作用。这允许您设置handles方法。它不允许您直接调用像push这样的方法。为此,您需要使用use Moose::Autobox (并且您不需要数组特征)。
或者你可以这样做:
has 'tid_stack' => (
traits => ['Array'],
is => 'rw',
isa => 'ArrayRef[Str]',
default => sub { [] },
handles => {
push_tid => 'push',
},
);
...
$self->push_tid( get_hrtid( $template ) );https://stackoverflow.com/questions/3487559
复制相似问题