问题标签 [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 投票
1 回答
2380 浏览

java - SCJP 问题:使用 var-args 重载 Java 方法。理由是什么?

为什么下面的程序会抛出异常?

}

方法 callMethod(Integer[]) 对于 MainClass 类型不明确

好的,我可以看到这两种方法中的任何一种都可以工作(如果另一种被注释掉),但我也知道如果原语与方法的输入类型不完全匹配,会发生什么情况。

尝试的第一件事是扩大原语。所以,如果有第三种方法:

代码会打印很长

第二件事是对原语进行装箱。因此,如果有一种方法采用整数,那将是调用的方法。

第三个优先级是 var-args。

基于上述优先级,我希望第二个优先级是这种情况。我希望将 int 包装成一个 Integer 并调用 (Integer...) 。但是,这当然不会发生。相反,会引发异常。

有谁看到并可以解释为什么优先级不适用于此示例?

干杯!

0 投票
3 回答
7191 浏览

c++ - 向可变参数宏添加默认参数

是否可以在可变参数宏中的变量参数之前添加默认参数?例如,我有类似的宏版本

我想在变量参数之前在宏中添加另外 2 个默认参数,这样它就不会影响以前的版本。喜欢:

任何帮助,将不胜感激。

0 投票
6 回答
222963 浏览

java - 方法的 Java 变量号或参数

是否可以声明一个允许可变数量参数的方法?

定义中使用的符号表示该方法应允许可变数量的参数是什么?

答案:可变参数

0 投票
1 回答
3196 浏览

c++ - Variadic Macros:如何解决“宏的实际参数过多..”

我一直在努力让我最初在 mac 上构建的一些代码在 Visual Studio 2008 Express 下运行,并且在我用于断言代码的可变参数宏中遇到了一个奇怪的问题:

宏定义为:

这一切都在 gcc(在 osx 下)下运行良好,并且曾经在 VS 2005 下运行,但是在 2008 年我收到以下警告:

调用代码很简单:

我确定我错过了一些简单的东西,而我的 google foo 让我失望了……

谢谢。

0 投票
2 回答
37580 浏览

gcc - va_list 尚未声明

在 Fedora 11 上编译一些工作代码时,我收到此错误:

我在用:

有谁知道是什么问题?

0 投票
5 回答
1515 浏览

c - C 函数声明中的“...”是什么意思?

这是什么意思?

我无法理解……是什么。谁能解释一下?

0 投票
4 回答
19364 浏览

iphone - 如何将变量参数传递给另一个方法?

我用谷歌搜索并知道如何使用变量参数。但我想将我的变量参数传递给另一个方法。我收到错误。怎么做 ?

0 投票
1 回答
9836 浏览

string - 在 LaTeX 中拆分逗号分隔的参数

我正在尝试构建一个类似于 LaTeX 的命令\cite{},它接受像这样的逗号分隔的参数列表

\cite{Wall91, Schwartz93}

我想将参数表示的逗号分隔列表中的每个项目传递给另一个命令,并返回各个结果的串联。我想它是这样的:

关于 LaTeX 中的字符串操作、变量和循环的文献会很棒!

另外:有没有办法再次使用逗号加入单个结果?

谢谢!

0 投票
1 回答
416 浏览

c - 调用具有不同数量参数的 cdecl 函数

我有一些我希望根据一些输入调用的函数。每个函数都有不同数量的参数。换句话说,

这有点笨重且难以维护。理想情况下,这些是可变参数函数(例如 printf 样式)并且可以使用可变参数。但他们不是。因此,利用 cdecl 调用约定,我通过一个充满参数的结构填充堆栈。我想知道是否有更好的方法来做到这一点。请注意,这仅限于内部(例如,简单工具、单元测试等),不会用于任何可能受到恶意攻击的生产代码。

例子:

输出:

0 投票
3 回答
688 浏览

scala - 使用重复参数的成本

我考虑重构一些当前采用类型参数ListSet具体类参数的方法签名List[Foo]——以使用重复参数代替:Foo*.

更新以下推理是有缺陷的,继续前进......
这将允许我使用相同的方法名称并根据参数类型重载它。List使用or是不可能的Set,因为List[Foo]List[Bar]擦除后具有相同的类型:List[Object]

在我的情况下,重构的方法可以很好地处理scala.Seq[Foo]重复参数的结果。我将不得不更改所有调用并向所有集合参数添加序列参数类型注释:baz.doStuffWith(foos:_*).

鉴于从集合参数切换到重复参数在语义上是等效的,这种变化是否会对性能产生一些我应该注意的影响?

scala 2.7._ 和 2.8 的答案是否相同?