Perl 如何使用Moose为数组属性添加方便的函数?

Perl 如何使用Moose为数组属性添加方便的函数?,perl,moose,Perl,Moose,恐怕这是一个基本问题。看看下面的代码。我想知道是否有一种方法可以声明切片属性,从而避免使用获取切片和添加切片的样板文件 package Gurke; use Moose; has slices => is => 'rw', isa => 'ArrayRef[Str]', default => sub { [] }; sub get_slices { return @{ $_[0]->slices } } sub add_slice { my( $sel

恐怕这是一个基本问题。看看下面的代码。我想知道是否有一种方法可以声明
切片
属性,从而避免使用
获取切片
添加切片
的样板文件

package Gurke;
use Moose;

has slices => is => 'rw', isa => 'ArrayRef[Str]', default => sub { [] };

sub get_slices { return @{ $_[0]->slices } }

sub add_slice {
    my( $self, $slice ) = @_;
    push @{ $self->slices }, $slice;
    return;
}

no Moose;
__PACKAGE__->meta->make_immutable;

package main; # now a small test for the above package
use strict;
use warnings;
use Test::More;
my $gu = Gurke->new;
$gu->add_slice( 'eins' );
$gu->add_slice( 'zwei' );
$gu->add_slice( 'drei' );
my @sl = $gu->get_slices;
is shift @sl, 'eins';
is shift @sl, 'zwei';
is shift @sl, 'drei';
done_testing;

谢谢

我是驼鹿初学者,但我想你需要这个:

has slices =>
    is => 'rw',
    isa => 'ArrayRef[Str]',
    default => sub { [] },
    traits  => ['Array'],
    handles => {
        add_slice  => 'push',
        get_slices => 'elements',
    },
;

谢谢,亲爱的驼鹿初学者。这很有效,正是我想要的。我尝试了
特征
处理
,但没有看到它们应该结合起来。-如果你碰巧知道如何让驼鹿在被传递一个未声明的属性时死去,我也会心存感激。:-)我试着想象一下黄瓜是什么样子,你可以在里面放几片东西D