首页 > TAG信息列表 > variadic-functions

为什么参数比常规数组“表现差”?

如果现在就在IDE中键入string.Format,您将看到有4种不同的重载:一个重载一个字符串和一个对象,另一个重载一个字符串和两个对象,然后一个重载三个对象,最后一个重载使用参数.根据this answer,这是因为params产生了“开销”,而其他一些语言可能不支持它. 我的问题是,为什么不能这样调

计算克隆函数的变量参数数量

我正在尝试LD_PRELOAD linux的克隆功能.在我的LD_PRELOADed版本中,需要在调用原始克隆函数之前记录输入参数.但是,问题是克隆使用可变数量的参数.这样声明. int clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ... /* pid_t *pid, struct user_desc *tls, pi

从Java调用可变长度参数Scala函数的语法?

我有一个Scala类,其构造函数带有可变长度参数列表. case class ItemChain(items: Item*) 从Scala可以这样称呼它 ItemChain(Item(), Item()) 我不知道从Java调用它的语法.如果我这样做 new ItemChain(new Item(), new Item()) 我收到一个编译器错误,提示该行与签名scala.coll

如何在PHP中代理varargs函数

我想“代理”一个varargs函数(有点像快捷方式): /** The PROXY function */ function proxy_to_foo(/*varargs*/) { real_foo(func_get_args()); } /** The real function */ function real_foo(/*varargs*/) { print_r(func_get_args()); } // Now I call it: proxy_to_

java-方法oveloading-对象与对象变量

请参见下面的代码: // 1st method private static void method(Object o){ System.out.println("object method"); } // 2nd method private static void method(Object... o){ System.out.println("object vararg method"); } public static void main(

c转发函数调用

是否可以将一个函数的参数列表传输到另一个函数? 例如,在我的functionA中,我想使用varargs列表中的参数调用我的functionB / functionC(取决于执行状态).请注意,我无法更改functionB / functionC声明. int functionA(int a, ...){ ... va_list listPointer; va_start(

c – 没有指定第一个参数的变量函数?

出于好奇,我想我会尝试编写一个基本的C类,模仿C#的多个委托模式.下面的代码主要完成了这项工作,几乎所有类型安全都遭受了令人讨厌的牺牲,但是必须使用初始的伪参数来设置va_list似乎确实有些偏差.有没有办法在没有这个的情况下使用va_list? 我确实知道有很多方法可以用(例如)boost

java – 在标记库描述符中使用varargs

是否可以将TLD映射到以下函数: public static <T> T[] toArray(T... stuff) { return stuff; } 所以我可以这样做: <c:forEach items="${my:toArray('a', 'b', 'c')}"... 我尝试了以下< function-signature> s java.lang.Object toArra

c – 将可变参数模板参数传递给可变参数函数

我们正在使用第三方C库,它提供了printf()风格的日志功能, void log(const char *format, ...); 由于不值得进入的原因,我们需要限制消息记录的速率,这有点像 void rate_limited_log(const char* format, ...) { if (<not too fast>) { log(format, ...); } }

c – 将一个va_list作为参数传递给另一个参数

我正在使用fastcgi库创建一个应用程序,他们的打印方法有点冗长.我正在尝试用自己的方法包装他们的fprintf函数: 我想转 FCGX_FPrintF(out, char* fmt, …); 成 write(char* strFormat, …); 我找到了va_list的魔力但找不到将va_list值传递到fprintf函数的简单方法.有没有办法

数组声明中的PHP Spread语法

PHP支持variadic functions的扩展语法. 在JavaScript中,您可以使用扩展语法来执行this: var a = [1, 2]; var b = [...a, 3, 4]; console.log(b); // [1, 2, 3, 4] 但是,尝试在PHP中执行此操作: $a = [1, 2]; $b = [...$a, 3, 4]; var_dump($b);die; 结果出现此错误: Parse erro

变量长度参数是否被视为Java中的数组?

据我所知,数组由固定数量的元素组成,并且可变长度参数在传递时使用相同数量的参数(相同类型).但他们一样吗?我可以通过一个预期的另一个吗?解决方法:是的,如果你有一个带有varargs参数的方法,如下所示: public void foo(String... names) 你这样称呼它: foo("x", "y", "z"); 然后编

c – 为什么在初始化列表可用时使用可变参数?

我一直想知道可变参数比初始化列表有什么优点.两者都提供相同的能力 – 将无限数量的参数传递给函数. 我个人认为初始化列表更优雅一些.语法不那么尴尬. 此外,随着参数数量的增加,初始化程序列表似乎具有明显更好的性能. 那么我还缺少什么,除了在C中使用变量参数的可能性之外呢?解决

java – 形式参数类型声明中double …和double []之间的区别

我有疑问:这两个声明有什么区别? public static void printMax(double... numbers) { ... } public static void printmax(double numbers[]) { ... } 是双…数字与双数[]相同?解决方法:在varargs 方法参数声明中的Type …构造通常称为varargs.在JLS中,它被称为变量arity参数. J

c – 将NON-POD类型传递给Variadic函数是不确定的行为?

作者说,In this document Only a POD-type can be an argument for the ellipsis “…” while std::string is not a POD-type. 我理解这一点,因为将NON-POD类型传递给Variadic函数是未定义的行为.这样对吗? 虽然,他是说C/C++标准吗?我试图在n3242 C spec中找到它.但找不到. 我想

c 11 Variadic Printf性能

可变参数模板在c 11中介绍.我发现printf函数可以使用它替换. 但是,cout用于实现.我想知道是否有可能使用其他东西来实现类型安全但不牺牲太多性能. void safe_printf(const char *s) { while (*s) { if (*s == '%') { if (*(s + 1) == '%') {

Java varargs方法参数列表与数组

可变参数: public static void foo(String... string_array) { ... } 与 单阵列参数: public static void bar(String[] string_array) { ... } Java 1.6似乎接受/拒绝以下内容: String[] arr = {"abc", "def", "ghi"}; foo(arr); // accept bar(arr); // ac

java – 通过varargs参数可能的堆污染

我理解当使用具有泛型类型的varargs时,Java 7会发生这种情况; 但我的问题是…… 当Eclipse说“它的使用可能会污染堆?”时,Eclipse到底意味着什么呢? 和 新的@SafeVarargs注释如何阻止这种情况?解决方法:堆污染是一个技术术语.它指的是类型不是它们指向的对象的超类型的引用. List<A>

Java,参数中有3个点

以下方法中的3个点是什么意思? public void myMethod(String... strings){ // method body } 解决方法:这意味着可以传递零个或多个String对象(或它们的数组)作为该方法的参数. 请参阅此处的“任意数量的参数”部分:http://java.sun.com/docs/books/tutorial/java/javaOO/argum

java – 重载var-args

谁能解释为什么第一种方法优于第二种? 我知道这个重载规则(除了首先编译器找到合适的args) >扩大 >自动装箱> var-args 码: public class Proba{ public static void show(Object ... args){ System.out.println("Object ..."); } public static void show(In

泛型和varargs java

以下是我的设置 public interface Test<T extends MyInterface> { someMethod(T... a) } public class TestImpl implements Test<MyInterfaceImpl> { someMethod(MyInterfaceImpl... a) } public class MyInterfaceImpl implements MyInterface {} public

c – 使用未知数量的参数调用可变参数函数

假设我有一个带有可变数量参数的函数:我想从其他地方调用这个函数,构建参数列表,但事先不知道我需要多少个参数. 对不起,没有得到很好的解释,希望这段代码能让我的问题更加清晰: void foo(int n, ...) { va_list vl; va_start(vl,n); for (int i = 0; i<n; i++) {

java – 为什么cast(Object)null结果为null?

我使用java 7,并创建了一个varargs方法 public class JavaApplicationTest { /** * @param args the command line arguments */ public static void main(String[] args) { addBundleMessage("b", Integer.SIZE, "key", (Object) null)

java – Varargs的替代品

我正在实现一个类,它的’构造函数必须得到一些字符串作为参数,但我不知道这些字符串的数量.我可以在这里传递一个vararg参数(String),但它是一个Homework,我们不能在我们的解决方案中使用任何类型的数组或其他不常见的库. (它应该是一个ArrayList或类似的东西,因为我们现在正在学习

python – 如何动态地创建特定arity的函数?

我想做n个参数的lambda,n在运行时计算.下一个最佳解决方案是: lambda *x : do_something_with_a_tuple( x ) 这几乎没问题,但是我想要确切的数字由Python本身检查并通过func_code查看.当n为2时,它应该完全像: lambda x1, x2 : do_something_with_a_tuple( (x1, x2) ) n等于3: