Как определить пользовательский тип массива ссылок 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 ответа
Решение
Я не уверен, зачем это делать, большинство программистов на 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