在perl中对随机数组项使用ArrayRef
下面的示例按预期工作在perl中对随机数组项使用ArrayRef,perl,Perl,下面的示例按预期工作 use 5.014; use warnings; package My::Items { use Moose; use Method::Signatures::Simple; has 'items' => ( is => 'rw', isa => 'ArrayRef[Str]',); method get_random { my @itm = @{$sel
use 5.014;
use warnings;
package My::Items {
use Moose;
use Method::Signatures::Simple;
has 'items' => ( is => 'rw', isa => 'ArrayRef[Str]',);
method get_random {
my @itm = @{$self->items};
return undef unless( @itm );
return $itm[ int(rand(@itm)) ];
}
__PACKAGE__->meta->make_immutable();
}
package main {
my $items = My::Items->new(items => [qw(a b c d)]);
say $items->get_random for(1..5);
}
问题是:如何重写get_random
方法而不使用helper数组@itm
method get_random {
return unless @{$self->items};
return $self->items->[ int(rand(@{$self->items})) ];
}
或者如果你不介意使用参考资料
method get_random {
my $itm = $self->items;
return unless @$itm;
return $itm->[ int(rand(@$itm)) ];
}
好的,thx-从“良好实践”的角度来看,什么是“首选”?使用helper arrayref变量
$itm
或第一个变量?@kobame helper变量增加了可读性,数组引用不会将数组元素复制到新数组中,这与my@itm=@{$self->items}不同代码>