问题标签 [variadic-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1711 浏览

java - 初始化 Map 的类型安全可变参数方法

我想写一个可以用来初始化地图的方法。第一剪:

简单,但不是类型安全的。使用泛型,可能类似于:

但不支持该语法。所以最终我来到了这个:

但是当我尝试它时,我需要转换它:

谁能告诉我如何编写我的 map() 方法,使其完全通用但不需要强制转换?

0 投票
2 回答
1896 浏览

flash - 如何将可变参数作为扩展列表传递给方法?

给定以下 Flash 方法:

如何确保 ExternalInterface.call() 以扩展形式解释 args?现在,如果我将一个列表传递给“args”,则该列表将被 ExternalInterface.call() 解释为“Object[]”类型的单个参数。当参数到达 Java 时,我无法区分以逗号分隔的多个参数与包含逗号作为其值的一部分的单个参数。

0 投票
8 回答
726 浏览

programming-languages - 是否有任何编程语言的函数末尾没有可变参数?

Python、C++、Scheme 和其他都允许您定义在参数列表末尾采用可变数量参数的函数......

...可以如下调用:

等等......是否有任何语言允许您在其他地方使用参数列表执行可变参数函数?像这样的东西:

所有这些都有效:

另外,参数列表中任何地方的可选参数呢?

0 投票
3 回答
190 浏览

c++ - 为什么构造函数中的 Multi Args 在 linux 下不起作用?

对于我的异常类,我有一个具有多个参数(...)的构造函数,它在 Windows 下工作正常,但是,在 linux 下它编译得很好,但拒绝链接到它。

为什么这在linux下不起作用?

这是一个例子:

.

编辑

所以当我这样称呼它时:

我得到这个编译错误:

0 投票
6 回答
7117 浏览

javascript - 递归连接一个javascript函数参数

我遇到了一个 javascript 谜题:编写一段 JavaScript 代码,将所有传递给函数的字符串连接起来:

@米波

看到函数参数表示为索引对象可能是一个数组,我认为可以以递归方式完成。但是我的递归实现抛出了一个错误。--"conc.arguments.shift 不是函数"--

似乎 conc.arguments 不是数组,而是可以通过数字索引访问并具有长度属性???令人困惑 - 请分享意见和其他递归实现。

谢谢

0 投票
1 回答
493 浏览

actionscript-3 - 在 ActionScript 中包装 Vararg 方法

我有一个可变参数方法,我想充当另一个可变参数方法的代理,但我不知道该怎么做。这是基本代码:

我正在从 Java 移植代码,其中类型系统知道参数实际上应该是字符串,而不是数组,因此它可以通过直接传递参数来确定调用 b(),并且一切都按照你的方式工作预计。

但是在 ActionScript 中,当通过代理方法调用时,参数数组会被包装到另一个数组中。

因此,当直接调用 b() 时,数组只有一层深。但是当通过 a() 调用 b() 时,数组有两层深。

有谁知道解决这个问题的技巧?

(注意:在我的真实代码中,a() 和 b() 实际上是在不同的类中,我真的不想触及 b() 的实现。我可以将 a() 重写为我心中的内容,但 b() 不应该改变。)

0 投票
3 回答
84434 浏览

java - 方法签名中的Java“参数”?

在 C# 中,如果您希望方法具有不确定数量的参数,您可以将方法签名中的最后一个参数设置为 a params,以便方法参数看起来像一个数组,但允许使用该方法的每个人传递尽可能多的该类型参数如来电者所愿。

我相当确定 Java 支持类似的行为,但我不知道该怎么做。

0 投票
3 回答
16692 浏览

c++ - va_end 到底是做什么用的?是否总是需要调用它?

va_end- 宏重置arg_ptr

访问变量参数列表后,arg_ptr指针通常用 重置va_end()。我知道如果您想重新迭代列表,它是必需的,但如果您不打算这样做,真的需要它吗?这只是一种好的做法,比如“default:你的总是有一个”的规则switch吗?

0 投票
4 回答
4500 浏览

java - Java 或 Apache Commons 中是否有 varargs null 检查功能?

我有四个变量,我想检查其中任何一个是否为空。我可以

但我真正想要的是

但我不想自己写。这个函数是否存在于任何常见的 Java 库中?我检查了 Commons Lang 并没有看到它。它应该使用可变参数来接受任意数量的参数。

0 投票
5 回答
672 浏览

c - “重新传递”函数参数

我正在使用经典的 C 进行此类分配,并且遇到了关于采用可变参数计数和类型的回调函数的问题。

基本上,我正在研究一个散列树(每个节点都是一个散列树的树),并且我有一个特定的遍历策略,将多次用于不同的目的,所以我将它实现为ht_walk(HashTree tree, (*callback)(Element e)),这样称为回调的函数将以任何必要的方式处理元素。

问题是,在我的问题中的大多数情况下,回调函数必须采用不同的参数。我知道如何使用“可变参数”函数(使用 stdarg、printf-way)设计一个带有可变参数列表的函数,但我不知道如何将这些参数“重新传递”给回调函数。

让我提供一个具体的例子:假设我有一个名为 的回调函数addToList(Element e, List list),并且我的 ht_walk 声明是 now ht_walk(HashTree tree, (*callback)(Element e), ...)。考虑我想在以下代码段中使用 ht_walk :

有没有办法做到这一点?提前致谢!