Ich möchte ein Array ändern (ich verwende splice
in diesem Beispiel, aber es könnte jeder Vorgang, der das Array ändert) und das modifizierte Array zurückgeben - im Gegensatz zu slice
, die die Elemente aus dem Array zurückgegeben zurückgibt. Ich kann es leicht tun, indem ein Block in einem Array zu speichern, wie folgt:Wie kann ich in Perl 6 zu einem Inline-Block verketten?
my $l = -> $a { splice($a,1,3,[1,2,3]); $a };
say (^6).map({ $_ < 4 ?? 0 !! $_ }).Array;
# [0 0 0 0 4 5]
say (^6).map({ $_ < 4 ?? 0 !! $_ }).Array.$l;
# [0 1 2 3 4 5]
Wie Inline-I durch die $l
in einen einzelnen Ausdruck dargestellt Block? Die offensichtliche Ersetzung funktioniert nicht:
say (^6).map({ $_ < 4 ?? 0 !! $_ }).Array.(-> $a { splice($a,1,3,[1,2,3]); $a })
Invocant requires a type object of type Array, but an object instance was passed. Did you forget a 'multi'?
Irgendwelche Vorschläge?