2016-01-02 10 views
8

In Perl kann der Operator , zum Verketten von Listen verwendet werden; In diesem Kontext reduziert Perl 6 jedoch nicht die Listen, was zu einer Liste von zwei Listen führt. Die Verkettung der Listen erfordert die Verwendung des Gleitoperators |.Perl 6 Liste Verkettung ohne Slip?

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

Gibt es eine Kurzschrift für diesen Vorgang?

Antwort

10

Sie können die "flat" sub für diesen Einsatz:

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

oder 'mein @ab = (@a, @b) Flacher;' – Joshua

+3

Dies sollte wohl darauf hin, dass es mehrere Schichten entfernen wird wenn die Werte keine Skalare sind. 'my \ list = (1,2, (3,4, (5,6))); sage flat list' => '(1 2 3 4 5 6)' aber mit '|()' flache nur einzelne Teile 'my \ list = (1,2, | ((3,4, (5,6)))); sag list' => '(1 2 3 4 (5 6))' –