Как определить пользовательский тип массива ссылок Ints в Perl 6?

Как определить пользовательский тип Array-Reference of Ints в Perl 6? Я попробовал это, но это не работает:

subset Array_of_Int of Array where *.all ~~ Int;

my $n = My::Class.new( option => < 22 3 4 5 > );

# Type check failed in assignment to $!option; expected My::Class::Array_of_Int but got List in block <unit> at ...

2 ответа

Решение

В моем классе:

has Int @.option;

Я не уверен, зачем это делать, большинство программистов на perl6 объявляют подмножество для элемента массива, но не для самого массива. Ракудо решает создать List вместо Array -> та же ловушка приходит при использовании Rat тип вместо Num, В любом случае это возможно. Подмножество не является полностью определенным типом (его невозможно скопировать). Вы должны создать массив явно $aoi = Array[Int].new(1,2,3,4,5,6),

> subset AoI of Array of Int
> my AoI $aoi;
> $aoi = Array[Int].new    
> $aoi.append(1,2,3,4)
  [1 2 3 4]
> $aoi.append("mystr")
Type check failed in assignment to ; expected Int but got Str
in block <unit> at <unknown file> line 1
Другие вопросы по тегам