在数组中§
查看方法 append的上下文中的主要文档 in context
multi method append(Array: ** is raw --> Array)multi method append(Array: \arg --> Array)
将提供的数值添加到数组的末尾并返回修改后的数组,或者如果调用数组或需要展平的参数is lazy,则抛出异常。
与方法 push相反,方法append
遵循单参数规则,并且可能最好将其视为
multi method append(Array: +values --> Array)
这意味着,如果您传递一个单个参数,该参数是一个非itemized Iterable
,append
将尝试将其展平。
例如
my = <a b c>;my = <d e f>;.append: ;say .elems; # OUTPUT: «6»say ; # OUTPUT: «[a b c d e f]»
在哈希中§
查看方法 append的上下文中的主要文档 in context
method append(+)
将提供的 Pairs 或偶数大小的列表附加到 Hash。如果键已存在,则将现有值转换为Array
,并将新值推送到该Array
。请注意,您不能混合偶数大小的列表和 Pairs 列表。此外,裸Pair
或冒号对将被视为.append
的命名参数。
my = a => 1;.append('b', 2, 'c', 3);.append( %(d => 4) );say ;# OUTPUT: «{a => 1, b => 2, c => 3, d => 4}».append('a', 2);# OUTPUT: «{a => [1 2], b => 2, c => 3, d => 4}»
注意:与push
相比,append
将slip
给定值,而push
将按原样添加它
my = :a[42, ]; .append: "a" => <a b c a>;say ; # OUTPUT: «{a => [42 a b c a]}»my = :a[42, ]; .push: "a" => <a b c a>;say ; # OUTPUT: «{a => [42 (a b c a)]}»
在任意类型中§
查看方法 append的上下文中的主要文档 in context
multi method append(Any \SELF: |values)
如果实例不是位置事物,则将其实例化为新的Array
,否则克隆当前实例。之后,它将作为参数传递的值附加到通过调用Array.append
获得的数组中。
my ;say .append; # OUTPUT: «[]»my ;say .append((1,2,3)); # OUTPUT: «[1 2 3]»
在角色 Buf 中§
查看方法 append的上下文中的主要文档 in context
method append( )
附加到缓冲区的末尾。
my = Buf.new( 1, 1, 2, 3, 5 );.append(9, 8, 7, 6);say .raku; # OUTPUT: «Buf.new(1,1,2,3,5,9,8,7,6)»
在 IterationBuffer 中§
查看方法 append的上下文中的主要文档 in context
method append(IterationBuffer: IterationBuffer --> IterationBuffer)
将另一个IterationBuffer
的内容添加到IterationBuffer
的末尾,并返回更新的调用者。
在 Nil 中§
查看方法 append的上下文中的主要文档 in context
method append(*@)
警告用户他们尝试附加到Nil
(或派生类型对象)。
在独立例程中§
有关sub append,请参阅上下文中的主要文档
multi append(\a, ** is raw)multi append(\a, \b)
在第一个参数上调用方法append
,传递剩余参数。方法append
应该将提供的值添加到集合或其部分的末尾。与方法push
不同,方法append
应遵循单参数规则。因此,如果您想为新集合类型实现符合要求的方法append
,则其行为应如同其签名只是
multi method append(::?CLASS: +values --> ::?CLASS)
类似于例程push
,如果您想支持自动初始化,则可能需要添加多方法
multi method append(::?CLASS: +values --> ::?CLASS)
append
的子例程形式在追加到Hash
的值时可能很有用。而方法append
会静默忽略解释为命名参数的文字对,子例程会抛出
my = i => 0;append , i => (1, 42);CATCH ;# OUTPUT: «Unexpected named argument 'i' passed»