问题标签 [variadic]
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.
php - 如何为可变参数函数(即参数数量未定义的函数)编写 Doxygen 注释?
我正在尝试为具有无限数量参数的函数编写 doxygen 块注释,然后我找不到合适的标签。提供的参数应该都是字符串,它们将在函数中连接起来形成一个新的字符串。
doxygen 标签的正确用法是什么?
templates - 使用可变参数模板回调模棱两可的重载
在 C++0X 中,我想使用可变参数模板编写通用调用者/回调函数。第一个障碍:被调用者是成员函数。到现在为止还挺好。第二个障碍:有许多重载的同名成员函数。
我将如何解决这个问题?我的主要参考是这篇好文章,但我不能让它发挥作用。
好的,让我们深入了解:
但是,我无法在 yum() 中编译调用,因为重载会阻止模板解析。根据引用的文章,我应该显式创建一个函数对象
然后悠闲地打电话sendBarToID_15(f, this, 17, 29)
。
我怎样才能使这项工作?
std::bind 魔术在最后一行中消除了“this”的加分。
以有用的方式制作 15 个参数的额外奖励积分。
非常感谢!!
templates - 使用可变参数模板进行索引
假设我有一个正在展开的参数包,例如
现在假设我有一些其他的小功能,这些对象需要通过。
我通常会替换为
但是,如果some_func
需要有关参数的更多信息而不仅仅是它的类型,例如,它在参数包中的数字位置,我该怎么办?所以,而不是扩大到
我可以将其扩展到
例如?
variadic - 如何在 jsdoc 中记录可变参数?
如何在 jsdoc 中记录可变参数?有没有办法记录类型的参数,如“字符串数组”?
c++ - 有没有办法在可变参数宏参数上使用 C++ 预处理器字符串化?
我的猜测是这个问题的答案是否定的,但如果有办法,那就太棒了。为了澄清,假设我有以下宏:
我想做的是在将 X 的所有变量传递给可变参数函数之前以某种方式对其进行字符串化;这里的关键字是之前。我意识到没有办法真正从宏定义中访问各个参数,但是有没有办法将所有参数字符串化,可能类似于以下内容?
objective-c - 可变参数后的参数
Objective-C,或者具体来说是 Cocoa,支持可变参数,例如 class the method on NSString +(NSString *)stringWithFormat:(NSString *)string, ....
。
现在,我想知道的是是否可以遵循可变参数必须在方法的末尾,或者该方法可以在之后继续吗?
例如,假设我有可变参数方法(使用适当的宏),
如果我想在特定索引处使用它,我可以做这样的事情吗?
我一直在尝试,这个具体的例子不起作用,给我一条错误消息,说“预期的';' 在方法原型之后”。当然,我可以将参数打乱,以确保可变参数在最后,就像这样,
这当然有效,但对我来说,在 Cocoa 命名约定中感觉相当陌生——这对我来说是个问题。
谢谢,
templates - 这个可变参数模板参数推导正确吗?
我一直在试验可变参数模板和参数转发。我想我发现了一些不一致的行为。
为了说明,这个程序:
输出以下内容:
即使 foo 的模板特化有一个 const 引用第一个参数,可变参数是按值传递的,因为模板类型被推导出为非引用类型,如X<A>
输出所示。
所以,我咨询了Thomas Becker:
在这里,以下适用:
当 foo 在 A 类型的左值上调用时,T 会解析为 A&,因此,根据上面的引用折叠规则,参数类型实际上变成了 A&。
当 foo 在类型 A 的右值上调用时,T 解析为 A,因此参数类型变为 A&&。
试试这个:
哪个输出:
现在我难住了。这里有 foo 的三个调用。在我的脑海中,main()
应该推断foo<A,A,A>(A&&,A&&,A&&)
(因为 A() 是一个未命名的右值,因此是一个引用),它重载解析为foo<A,A,A>(const A&,A&&,A&&)
. 这反过来又推导foo<A,A>(A&&,A&&)
出来等等。
问题是:为什么X<A,A>
有 non-reference A
s 但X<A&>
有 reference A
?
这会导致问题,因为我不能std::forward
在递归中使用。
c++ - 什么是 C++ 中可变参数函数的良好类型安全替代方案?
结合这个问题。我无法为以下看似基本的问题提出一个好的类型安全解决方案。我有一个音乐播放列表类,其中包含应该播放的歌曲列表。看起来很简单,只需制作队列中所有歌曲的 std::list ,并将其提供给用户即可。然而,音频解码和音频渲染在不同的线程上发生是不必要的。所以列表需要互斥保护。使用我的库的其他程序员经常忘记互斥锁。这显然导致了“奇怪”的问题。
所以一开始我只是为这个类写了setter。
这导致了如下的用户代码......
虽然这有效并且非常明确。打字非常繁琐,而且由于实际工作中的所有杂乱无章,它很容易出错。为了证明这一点,我实际上故意在上面的代码中添加了一个错误,这样的东西很容易制作,并且可能会通过代码审查原封不动,而歌曲 4 从未在播放列表 2 中播放。
从那里我去研究可变参数函数。
这将导致用户代码如下...
现在更容易查看是否添加了两次歌曲或未包含歌曲。但是在解决方案 A 中,如果 NULL 不在列表的末尾,并且不是跨平台的,它将崩溃。在解决方案 B 中,您必须计算可能导致几个错误的参数数量。此外,没有一个解决方案是类型安全的,用户可以传入不相关的类型并在运行时等待崩溃。这似乎不是一个可持续的解决方案。然后我遇到了std::initializer_list。不能使用它我开发的几个编译器还不支持它。所以我试着模仿它。我在下面得到了这个解决方案。
这将导致用户代码看起来像这样......
这种语法不会让我们的小测试组感到困惑。但是,我非常担心如此严重地滥用操作员超载。所以我发布了上面的问题。我想看看在我们的测试组中比较专家的程序员是怎么想的。很多程序员不喜欢它,但它似乎比上述解决方案更好,因为它会在编译时而不是在运行时捕获大多数错误。然而,汤姆发布了一个有趣的反例,这会导致意外行为。
这让我对那个解决方案感到厌烦。那么您对更好的解决方案有什么想法吗?
PS 上面的代码都没有被编译,它们只是为了示例目的。
javascript - 在Javascript中的可变参数函数内调用可变参数函数?
我有两个函数 a() 和 b(),它们都是可变参数函数,比如说当我像这样调用函数 a() 时:
那么函数 b() 也将在 a() 中被调用,但在 a() 的参数列表中没有第一个参数“arg0”:
有什么办法吗?
c - C - 将 va_list 传递给哨兵终止函数 - 需要 execlp() 的包装器
我正在尝试为 execlp() 编写一个包装器。为什么这不起作用?是哨兵吗?
提前感谢您的任何答案!