首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问Moose数组

访问Moose数组
EN

Stack Overflow用户
提问于 2010-08-15 21:34:12
回答 1查看 1.4K关注 0票数 3

我很难弄清楚推送到驼鹿数组的语法(我相信这很明显,我很愚蠢)。这是this question的延续。在我看来,对于我的特定情况,我需要的不仅仅是一个简单的值。尝试使用一种类似驼鹿的方式实现它(也许这是错误的?)但很明显我做得不对。

代码语言:javascript
复制
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(@_)
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-15 22:41:08

您误解了traits => ['Array']的作用。这允许您设置handles方法。它不允许您直接调用像push这样的方法。为此,您需要使用use Moose::Autobox (并且您不需要数组特征)。

或者你可以这样做:

代码语言:javascript
复制
has 'tid_stack' => (
    traits => ['Array'],
    is     => 'rw',
    isa    => 'ArrayRef[Str]',
    default => sub { [] },
    handles => {
      push_tid => 'push',
    },
);

...

    $self->push_tid( get_hrtid( $template ) );
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3487559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档