2016-01-02 12 views
8

W Perlu operator , może być używany do łączenia list; jednak Perl 6 nie spłaszcza List w tym kontekście, co daje Listę dwóch List. Łączenie list wymaga użycia operatora |.Perl 6 Lista konkatenacji bez poślizgu?

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

Czy jest jakiś skrót do tej operacji?

Odpowiedz

10

Można użyć "płaskiej" sub do tego:

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

lub 'moja @ab = (@a, @b) .flat;' – Joshua

+3

Należy podkreślić, że prawdopodobnie będzie to usunąć wiele warstw jeśli wartości nie są skalarami. 'my \ list = (1,2, (3,4, (5,6))); powiedz płaską listę' => '(1 2 3 4 5 6)' ale używając '|()' spłaszcz tylko poszczególne części 'my \ list = (1,2, | ((3,4, (5,6)))); say list' => '(1 2 3 4 (5 6))' –