2016-01-05 15 views
5

Perl 6でIntsの配列リファレンスのカスタムタイプを定義する方法は?私はこれを試してみましたが、それは動作しません:Perl 6でIntsのArrayReferenceのカスタムタイプを定義する方法は?

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 ... 

答えて

5

::クラス:

has Int @.option; 
2

なぜこれを行うには、私は、配列要素のためではなく、配列自体の宣言サブセットで最もPerl6のプログラマはよく分かりません。 RakudoはArrayの代わりにListを作成することを決めます - Numの代わりにRatタイプを使用すると、同じトラップが発生します。とにかく可能です。サブセットは完全修飾型ではありません(インスタンス化することはできません)。明示的に配列を作成する必要があります$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 
+0

私は 'のInt @ .option'を持っているが、私はその前に知らなかっただけです。 –

関連する問題