2016-01-05 5 views
5

Come definire un tipo personalizzato di un riferimento di array di Ints in Perl 6? Ho provato questo, ma non funziona:Come definire un tipo personalizzato di Arrayreference di Ints in 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 ... 

risposta

5

In My :: Classe:

has Int @.option; 
2

io non sono sicuro perché per fare questo, la maggior parte dei programmatori con Perl6 dichiarare sottoinsieme di elemento di matrice, ma non per la matrice stessa. Rakudo decide di creare List anziché Array -> lo stesso trap arriva quando si utilizza il tipo Rat anziché Num. Ad ogni modo è possibile. Sottoinsieme non è del tipo completo (non è possibile eseguirlo). Devi creare un array esplicitamente $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

Ho bisogno solo 'ha Int @ .option', ma non sapevo che prima. –

Problemi correlati