2016-01-02 2 views
8

In Perl è possibile utilizzare l'operatore , per concatenare elenchi; tuttavia, Perl 6 non appiattisce gli elenchi in questo contesto risultando in un elenco di due elenchi. La concatenazione degli elenchi richiede l'utilizzo di |, l'operatore di scorrimento.Perl 6 List Concatenation senza Slip?

my @a = <a b c>; 
my @b = <d e f>; 
my @ab = |@a, |@b; 

C'è qualche stenografia per questa operazione?

risposta

10

È possibile utilizzare il sub "flat" per questo:

my @a = <a b c>; 
my @b = <d e f>; 
my @ab = flat @a, @b; 
say @ab.perl; #> ["a", "b", "c", "d", "e", "f"] 
my @abf = (@a, @b).flat; 
say @abf.perl; #> ["a", "b", "c", "d", "e", "f"] 
+1

o il mio @ab = (@a, @b) .flat ';' – Joshua

+3

Questo dovrebbe probabilmente precisare che rimuoverà gli strati multipli se i valori non sono scalari. 'my \ list = (1,2, (3,4, (5,6))); say flat list' => '(1 2 3 4 5 6)' ma usando '|()' appiattisce solo le singole parti 'my \ list = (1,2, | ((3,4, (5,6)))); di 'list' => '(1 2 3 4 (5 6))' –