Questions tagged «variadic-functions»

如果函数可以接受可变数量的参数,则它是可变参数。也就是说,其不确定性是固定的。缩写“ varargs”通常用于指代这些类型的函数。



7
在Go中串联两个切片
我正在尝试将切片[1, 2]和切片结合起来[3, 4]。如何在Go中执行此操作? 我试过了: append([]int{1,2}, []int{3,4}) 但是得到了: cannot use []int literal (type []int) as type int in append 但是,文档似乎表明这是可能的,我想念的是什么? slice = append(slice, anotherSlice...)


21
如何在JavaScript中将“参数”对象转换为数组?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 argumentsJavaScript中的对象是一个奇怪的疣-在大多数情况下,其行为就像一个数组,但实际上不是数组对象。因为它是真正的完全是另一回事,它没有从有用的功能Array.prototype类似forEach,sort,filter,和map。 使用一个简单的for循环从arguments对象构造新数组非常容易。例如,此函数对其参数进行排序: function sortArgs() { var args = []; for (var i = 0; i < arguments.length; i++) args[i] = arguments[i]; return args.sort(); } 但是,仅获得对极其有用的JavaScript数组函数的访问权限,这是一件相当可怜的事情。是否有使用标准库的内置方法?

10
为什么要使用params关键字?
我知道这是一个基本问题,但我找不到答案。 为什么要使用它?如果编写使用该函数的方法或方法,则将其删除时,代码仍将完美运行,没有代码的情况下将100%正常运行。例如: 有参数: static public int addTwoEach(params int[] args) { int sum = 0; foreach (var item in args) sum += item + 2; return sum; } 没有参数: static public int addTwoEach(int[] args) { int sum = 0; foreach (var item in args) sum += item + 2; return sum; …

10
传递可变数量的参数
假设我有一个C函数,该函数需要可变数量的参数:如何调用另一个从其内部期望可变数量参数的函数,并将所有传入第一个函数的参数传递给我? 例: void format_string(char *fmt, ...); void debug_print(int dbg_lvl, char *fmt, ...) { format_string(fmt, /* how do I pass all the arguments from '...'? */); fprintf(stdout, fmt); }


5
我可以将数组作为参数传递给Java中具有可变参数的方法吗?
我希望能够创建一个像这样的函数: class A { private String extraVar; public String myFormat(String format, Object ... args){ return String.format(format, extraVar, args); } } 这里的问题是,在方法中将其args视为,因此是的单个参数,而我希望将每个in 作为新参数传递。由于也是带有可变参数的方法,因此应该可行。Object[]myFormatString.formatObjectargsString.format 如果这不可能,是否有类似的方法String.format(String format, Object[] args)?在这种情况下,我可以在前面加上extraVar到args使用新的数组,并把它传递给该方法。

4
如何将ArrayList传递给varargs方法参数?
基本上我有一个ArrayList的位置: ArrayList<WorldLocation> locations = new ArrayList<WorldLocation>(); 在此之下,我调用以下方法: .getMap(); getMap()方法中的参数为: getMap(WorldLocation... locations) 我遇到的问题是我不确定如何在整个locations方法列表中传递该方法。 我试过了 .getMap(locations.toArray()) 但getMap不接受,因为它不接受Objects []。 现在,如果我使用 .getMap(locations.get(0)); 它会完美地工作...但是我需要以某种方式传递所有位置...我当然可以继续添加locations.get(1), locations.get(2)等等,但是数组的大小会有所不同。我只是不习惯ArrayList 最简单的方法是什么?我觉得我现在不在考虑。


2
Java SafeVarargs批注,是否存在标准或最佳实践?
我最近遇到了Java @SafeVarargs批注。搜寻是什么使Java中的可变参数功能不安全,这让我感到很困惑(堆中毒?已删除类型?),所以我想知道一些事情: 是什么使可变参数Java函数在@SafeVarargs某种意义上不安全(最好以深入示例的形式进行解释)? 为什么注释留给程序员自己决定?这不是编译器应该能够检查的东西吗? 是否必须遵循一些标准以确保其功能确实是安全的?如果没有,有哪些最佳实践来确保呢?

12
是否可以向JavaScript函数发送可变数量的参数?
是否可以从数组向JavaScript函数发送可变数量的参数? var arr = ['a','b','c'] var func = function() { // debug alert(arguments.length); // for(arg in arguments) alert(arg); } func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d' func(arr); // prints 1, then 'Array' 我最近写了很多Python,能够接受并发送varargs是一个很棒的模式。例如 def func(*args): print len(args) for i in args: print i func('a','b','c','d'); // prints …

9
如何在Mockito中正确匹配varargs
我一直在尝试使用Mockito模拟具有vararg参数的方法: interface A { B b(int x, int y, C... c); } A a = mock(A.class); B b = mock(B.class); when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b); assertEquals(b, a.b(1, 2)); 这不起作用,但是如果我改为这样做: when(a.b(anyInt(), anyInt())).thenReturn(b); assertEquals(b, a.b(1, 2)); 尽管我在对方法进行存根时已经完全省略了varargs参数,但这仍然有效。 有什么线索吗?

7
在Swift中将数组传递给具有可变数量args的函数
在Swift编程语言中,它说: 函数也可以采用可变数量的参数,将它们收集到一个数组中。 func sumOf(numbers: Int...) -> Int { ... } 当我用逗号分隔的数字列表(sumOf(1、2、3、4)调用这样的函数时,它们可以作为函数内部的数组使用。 问题:如果我已经有一个要传递给该函数的数字数组怎么办? let numbers = [1, 2, 3, 4] sumOf(numbers) 这将因编译器错误而失败,即“找不到'__conversion'的重载,该重载接受了提供的参数”。有没有一种方法可以将现有数组转换为可以传递给可变参数函数的元素列表?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.