我想設置一個屬性,該屬性是一個arrayrefs數組,強制nonarrayrefs數組參考。例如。如何設置AoArrayrefs屬性,使用標量強制轉換爲arrayref?
[0,[0,0,0],[1,2,3]]到[[0],[0,0,0],[1,2,3]]
也,我希望能夠以強制的方式推動或設置AoA元素。這是我的嘗試:
{
package MyArray;
use namespace::autoclean;
use Moose::Util::TypeConstraints;
use Moose;
subtype 'My::ArrayRef' => as 'ArrayRef';
coerce 'My::ArrayRef'
=> from 'Num|Str'
=> via {[$_]};
has 'ents' => (
traits => ['Array'],
is => 'rw',
isa => 'ArrayRef[My::ArrayRef]',
default => sub { [] },
handles => {
push => 'push',
get => 'get',
set => 'set',
elements => 'elements',
count => 'count',
},
coerce => 1,
);
__PACKAGE__->meta->make_immutable;
}
use Modern::Perl;
my $a0 = MyArray->new(ents => [ 0, [ 0, 0, 0 ], [1,2,3] ]) ;
use Data::Dumper;
print Dumper $a0;
$a0->set(0,'cat');
print Dumper $a0;
$a0->push(1.0);
print Dumper $a0;
這是[crossposted](http://www.perlmonks.org/?node_id=917344)。 – ikegami
可以使用crosspost嗎?這裏的界面稍微比較乾淨,似乎在工作中加載速度稍快。我不想違反任何規範! – Demian
交叉是很好的,所以可以避免重複的工作,所以兩組都可以從響應中受益。 – ikegami