routine append
Documentation for routine append
assembled from the following types:
class Hash
From Hash
(Hash) method append
Defined as:
method append(+@values)
Append the provided Pairs or even sized list to the Hash. If a key already exists, turn the existing value into an Array and push new value onto that Array
. Please note that you can't mix even sized lists and lists of Pairs. Also, bare Pair
s or colon pairs will be treated as named arguments to .append
.
my %h = a => 1; %h.append('b', 2, 'c', 3); %h.append( %(d => 4) ); say %h; # OUTPUT: «{a => 1, b => 2, c => 3, d => 4}» %h.append('a', 2); # OUTPUT: «{{a => [1 2], b => 2, c => 3, d => 4}»
Note: Compared to push
, append
will slip
in the given value, whereas push
will add it as is:
my %hb = :a[42, ]; %hb.append: "a" => <a b c a>; say %hb; # OUTPUT: «{a => [42 a b c a]}» my %ha = :a[42, ]; %ha.push: "a" => <a b c a>; say %ha; # OUTPUT: «{a => [42 (a b c a)]}»
class Any
From Any
(Any) method append
Defined as:
multi method append(Any:U \SELF: |values --> Array)
In the case the instance is not a positional-thing, it instantiates it as a new Array, otherwise clone the current instance. After that, it appends the values passed as arguments to the array obtained calling Array.append
on it.
my $a; say $a.append; # OUTPUT: «[]» my $b; say $b.append((1,2,3)); # OUTPUT: «[1 2 3]»
class Nil
From Nil
(Nil) method append
method append(*@)
Warns the user that they tried to append onto a Nil
(or derived type object).
role Buf
From Buf
(Buf) method append
method append( $elems )
Appends at the end of the buffer
$bú.append( @φ[5..10] ); say $bú.raku; # OUTPUT: «Buf.new(1,1,2,3,5,8,13,21,34,55,89)»
class Array
From Array
(Array) routine append
Defined as
sub append(\array, |elems) multi method append(Array:D: \values) multi method append(Array:D: **@values is raw)
Appends the argument list to the array passed as the first argument. This modifies the array in-place. Returns the modified array. Throws for lazy arrays.
The difference from method push
is that if you append a single array or list argument, append
will flatten that array / list, whereas push
appends the list / array as just a single element.
Example:
my @a = <a b c>; my @b = <d e f>; @a.append: @b; say @a.elems; # OUTPUT: «6» say @a; # OUTPUT: «[a b c d e f]»