Desidero modificare un array (sto usando splice
in questo esempio, ma potrebbe essere qualsiasi operazione che modifica l'array) e restituire l'array modificato, a differenza di slice
, che restituisce gli elementi estratti dall'array. Posso farlo facilmente memorizzando un blocco in un array, come segue:Come concatenare a un blocco inline in Perl 6?
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]
Come si Inline blocco rappresentato da $l
in una singola espressione? La sostituzione ovvia non funziona:
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'?
Qualche suggerimento?