在数组中§

查看方法 append的上下文中的主要文档 in context

multi method append(Array:D: **@values is raw --> Array:D)
multi method append(Array:D: \arg --> Array:D)

将提供的数值添加到数组的末尾并返回修改后的数组,或者如果调用数组或需要展平的参数is lazy,则抛出异常。

方法 push相反,方法append遵循单参数规则,并且可能最好将其视为

multi method append(Array:D: +values --> Array:D)

这意味着,如果您传递一个单个参数,该参数是一个非itemized Iterableappend将尝试将其展平。

例如

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]␤»

在哈希中§

查看方法 append的上下文中的主要文档 in context

method append(+@values)

将提供的 Pairs 或偶数大小的列表附加到 Hash。如果键已存在,则将现有值转换为Array,并将新值推送到该Array。请注意,您不能混合偶数大小的列表和 Pairs 列表。此外,裸Pair或冒号对将被视为.append命名参数

my %h = => 1;
%h.append('b'2'c'3);
%h.append( %(=> 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}␤»

注意:push相比,appendslip给定值,而push将按原样添加它

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)]}␤»

在任意类型中§

查看方法 append的上下文中的主要文档 in context

multi method append(Any:U \SELF: |values)

如果实例不是位置事物,则将其实例化为新的Array,否则克隆当前实例。之后,它将作为参数传递的值附加到通过调用Array.append获得的数组中。

my $a;
say $a.append# OUTPUT: «[]␤» 
my $b;
say $b.append((1,2,3)); # OUTPUT: «[1 2 3]␤»

在角色 Buf 中§

查看方法 append的上下文中的主要文档 in context

method append$elems )

附加到缓冲区的末尾。

my $ = Buf.new11235 );
$.append(9876);
say $.raku# OUTPUT: «Buf.new(1,1,2,3,5,9,8,7,6)␤»

在 IterationBuffer 中§

查看方法 append的上下文中的主要文档 in context

method append(IterationBuffer:D: IterationBuffer:D $other --> IterationBuffer:D)

将另一个IterationBuffer的内容添加到IterationBuffer的末尾,并返回更新的调用者。

在 Nil 中§

查看方法 append的上下文中的主要文档 in context

method append(*@)

警告用户他们尝试附加到Nil(或派生类型对象)。

在独立例程中§

有关sub append,请参阅上下文中的主要文档

multi append(\a**@b is raw)
multi append(\a, \b)

在第一个参数上调用方法append,传递剩余参数。方法append应该将提供的值添加到集合或其部分的末尾。与方法push不同,方法append应遵循单参数规则。因此,如果您想为新集合类型实现符合要求的方法append,则其行为应如同其签名只是

multi method append(::?CLASS:D: +values --> ::?CLASS:D)

类似于例程push,如果您想支持自动初始化,则可能需要添加多方法

multi method append(::?CLASS:U: +values --> ::?CLASS:D)

append的子例程形式在追加到Hash的值时可能很有用。而方法append会静默忽略解释为命名参数的文字对,子例程会抛出

my %h = => 0;
append %h=> (142);
CATCH { default { put .message } };
# OUTPUT: «Unexpected named argument 'i' passed␤»