无法确定推送到Moose数组的语法(我确信这很明显而且我很愚蠢).这是这个问题的延续.在我看来,对于我的具体情况,我需要的不仅仅是一个简单的值.试图用Moose-ish的方式实现它(也许这是错的?)但我显然没有做对.
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(@_)
};
Run Code Online (Sandbox Code Playgroud)
你误会了什么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 ) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1363 次 |
| 最近记录: |