如何在Perl 6中定义一个自定义类型的整数数组引用?

5
如何在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个回答

5

在 My::Class 中:

has Int @.option;

2

我不确定为什么要这样做,大多数perl6程序员会为数组元素声明子集,而不是为数组本身声明。Rakudo决定创建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

我只需要 has Int @.option,但在此之前我并不知道。 - sid_com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接