Я пытаюсь использовать Moose с Moose :: Meta :: Attribute :: Native :: Trait :: Array, но похоже, что помощник ArrayRef не работает для меня. Ниже - мой код, который возвращает
Can't call method "add_item" on unblessed reference at bug.pl line 42.
Я использую Moose 2.0007 и Perl v5.10.1. Moose :: Autobox установлен.
Буду признателен за любое предложение.
#!/usr/bin/perl
use strict;
package CycleSplit;
use Moose;
has 'name'=>(isa=>'Str', is=>'rw');
has 'start'=>(isa=>'Num', is=>'rw');
has 'length'=>(isa=>'Num', is=>'rw');
1;
package Cycle;
use Moose;
my @empty=();
has 'name' => (isa => 'Str', is => 'rw');
has 'splits' => (
traits => ['Array'],
isa=>'ArrayRef[CycleSplit]',
is => 'rw',
default=>sub { [] },
handles=>{
add_item=>'push',
},
);
no Moose;
1;
package Main;
sub Main {
my $cyc=Cycle->new();
$cyc->name("Days of week");
for my $i (1..7) {
my $spl=CycleSplit->new();
$spl->name("Day $i");
$spl->start($i/7-(1/7));
$spl->length(1/7);
$cyc->splits->add_item($spl);
}
my $text='';
foreach my $spl ($cyc->splits) {
$text.=$spl->name." ";
}
print $text;
}
Main;