在 Perl6 中将多个值附加到数组

Posted

技术标签:

【中文标题】在 Perl6 中将多个值附加到数组【英文标题】:Appending multiple values to an array in Perl6 【发布时间】:2018-09-28 09:25:10 【问题描述】:

我正在寻找一种将多个值附加到@array 的方法。该文档指出,有一个名为 .append 的方法可以完成这项工作。但是当我做这样的事情时:

my @array = <a b>;
my @values = 1,2,3;
@array.append: @values, 17;

我得到一个嵌套结果:

[a b [1 2 3] 17]

【问题讨论】:

【参考方案1】:

这更能解释那里发生了什么:遵循single argument rule,它适用于此处,基本上表示传递给迭代器的任何内容(在这种情况下为append)都被视为单个参数@values,17正在构建一个列表(这将是 single 参数),因为, 是列表构建运算符; append 依次应用于列表的每个元素,没有展平它:首先是arran @values,其次是数字。 基线是:如果您使用逗号处理迭代器内容,它将构建一个列表,将其转换为单个参数,而不是使其成为两个参数并执行

(@array.append: <first argument>).append( <second argument> )

因此,如果您想将所有内容添加为单个扁平列表,请按照@lizmat 在她的回答中所说的那样做,或者做一个循环并依次附加每个元素。

【讨论】:

【参考方案2】:

您需要滑动数组,因为 Perl 6 不会自动滑动(“展平”),除非它是 a 参数中的 only 可迭代的。

所以:

@array.append: @values;      # will slip the array as it's the only parameter
@array.append: @values,17;   # does not slip @values
@array.append: |@values, 17; # will slip the @values into @array

除了|@values,您还可以slip(@values)@values.Slip

【讨论】:

以上是关于在 Perl6 中将多个值附加到数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RxSwift 中将值附加到观察到的数组

如何在 Objective-C 中将值附加到数组

如何从 foreach 循环中将双精度值附加到 2D 数组,并访问前一个索引?

在 CoffeeScript 中,如何将值附加到数组?

在JavaScript中将一个数组附加到另​​一个数组[重复]

在 Numpy Python 中将一维数组附加到二维数组