gpt4 book ai didi

actionscript-3 - Flash AS3 ... (rest) 参数

转载 作者:行者123 更新时间:2023-12-04 06:20:36 26 4
gpt4 key购买 nike

好的,所以我们都知道在函数中使用 ... (rest) 参数可以让我们传递任意数量的参数,如 Adob​​e AS3 手册中的示例所示:

function traceArgArray(x: int, ... args) {

for (var i:uint = 0; i < args.length; i++) {

trace(args[i]);

}

}

traceArgArray(1, 2, 3);

但是,我希望能够做的是可以选择传递单个参数或传递来自现有数组的参数:
myArray:Array = new Array(1,2,3);

所以:

traceArgArray(myArray);



正如我在这里写的那样,该函数将 myArray 视为单个对象,因此输出是 1,2,3——数组作为整体的表示,而不是数组的单个内容。

为了将 myArray 转换为一个逗号分隔的列表,其余运算符会将其识别为单个元素的列表,我尝试了以下操作:
traceArgArray(myArray.join());

但这并没有改变输出。看起来在这种情况下,参数被解释为单个字符串而不是逗号分隔的列表。

因此,我希望有人可以帮助我解决的难题可以通过以下两种方式之一来表达:

是否可以让 rest 参数将数组参数视为逗号分隔的参数列表?

-或者-

有没有一种方法可以将数组转换为逗号分隔的列表,然后将该列表作为逗号分隔的列表(而不是长字符串)传递给函数 AS,以便其余运算符可以正确解释它?

我想要做的基本事情——能够将值数组传递给接受任意数量参数的函数——似乎是通用的,所以也许有一个我没有看到的解决方法,因为我m 沉迷于 rest 运算符本身。

谢谢阅读!

最佳答案

您要找的是Function.apply() .在您的情况下,它看起来像这样:

myArray:Array = new Array(1,2,3);

function traceArgArray(x: int, ... args) {
for (var i:uint = 0; i < args.length; i++) {
trace(args[i]);
}
}

traceArgArray.apply(this, [0].concat(myArray)); // [0] being the first argument (x)

关于actionscript-3 - Flash AS3 ... (rest) 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com