标签: variadic-functions

Java未选中:为varargs参数创建未经检查的通用数组

我已将Netbeans设置为在我的Java代码中显示未经检查的警告,但我无法理解以下行中的错误:

private List<String> cocNumbers;
private List<String> vatNumbers;
private List<String> ibans;
private List<String> banks;
...
List<List<String>> combinations = Utils.createCombinations(cocNumbers, vatNumbers, ibans);
Run Code Online (Sandbox Code Playgroud)

得到:

[unchecked] unchecked generic array creation for varargs parameter of type List<String>[]

方法来源:

/**
 * Returns a list of all possible combinations of the entered array of lists.
 *
 * Example: [["A", "B"], ["0", "1", "2"]]
 * Returns: [["A", "0"], ["A", "1"], ["A", "2"], ["B", "0"], ["B", "1"], ["B", "2"]]
 *
 * @param <T> The type parameter
 * @param elements …
Run Code Online (Sandbox Code Playgroud)

java generics variadic-functions

96
推荐指数
2
解决办法
4万
查看次数

使用单个null参数调用Java varargs方法?

如果我有一个vararg Java方法foo(Object ...arg)并且我打电话foo(null, null),我有两个arg[0]arg[1]作为nulls.但如果我打电话foo(null),arg本身就是空的.为什么会这样?

我怎么称呼foo这样foo.length == 1 && foo[0] == nulltrue

java null language-design variadic-functions

89
推荐指数
3
解决办法
3万
查看次数

Python,可变长度位置参数后的默认关键字参数

我想我可以在Python 2的函数调用中使用可变长度位置参数之后的命名参数,但是SyntaxError在导入python类时我得到了一个.我正在使用以下"get"方法编写,例如:

class Foo(object):
    def __init__(self):
        print "You have created a Foo."

    def get(self, *args, raw=False, vars=None):
        print len(args)
        print raw
        print vars
Run Code Online (Sandbox Code Playgroud)

错误看起来像:

def get(self, *args, raw=False, vars=None):
                     ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我希望能够通过几种方式调用该方法:

f = Foo()
f.get(arg1, arg2)
f.get(arg1, raw=True)
f.get(arg1, arg2, raw=True, vars=something)
Run Code Online (Sandbox Code Playgroud)

等等

python python-2.x variadic-functions named-parameters default-parameters

78
推荐指数
2
解决办法
3万
查看次数

如何将多个原始参数传递给AsyncTask?

有相关的问题,例如如何将2个参数传递给AsyncTask类?但是我遇到了徒劳地尝试将多个原语作为参数传递给AsyncTask的困难,所以我想分享我发现的东西.在现有的问题和答案中没有捕捉到这种微妙之处,所以我想帮助那些遇到与我一样的问题的人,并为他们省去痛苦.

问题是:我有多个原始参数(例如两个long),我想传递给AsyncTask以在后台执行 - 它怎么能完成?(我的回答......经过一段时间的挣扎......可以在下面找到.)

primitive android variadic-functions android-asynctask

77
推荐指数
5
解决办法
9万
查看次数

如何将可变数量的参数传递给printf/sprintf

我有一个类,它包含一个"错误"函数,可以格式化一些文本.我想接受可变数量的参数,然后使用printf格式化它们.

例:

class MyClass
{
public:
    void Error(const char* format, ...);
};
Run Code Online (Sandbox Code Playgroud)

Error方法应该接受参数,调用printf/sprintf来格式化它然后用它做一些事情.我不想自己编写所有格式,因此尝试找出如何使用现有格式是有意义的.

c c++ printf variadic-functions

76
推荐指数
3
解决办法
11万
查看次数

C++ 11:Variadic模板函数参数的数量?

如何计算可变参数模板函数的参数数量?

即:

template<typename... T>
void f(const T&... t)
{
    int n = number_of_args(t);

    ...
}
Run Code Online (Sandbox Code Playgroud)

number_of_args在上面实现的最佳方法是什么?

c++ variadic-functions variadic-templates c++11

76
推荐指数
1
解决办法
2万
查看次数

如何创建polyvariadic haskell函数?

我需要一个函数,它接受任意数量的参数(所有相同的类型),对它们做一些事情然后给出一个结果.在我的具体情况下,参数列表是不切实际的.

当我查看haskell库时,我看到函数printf(来自模块Text.Printf)使用了类似的技巧.不幸的是,通过查看来源我无法理解这种魔力.

有人可以解释如何实现这一点,或至少一些网页/纸/任何我可以找到一个良好的描述吗?

动机:

我需要它的原因非常简单.对于学校(计算机科学课),我们需要编写一个能够"记录"数学表达式,将其表示为字符串的模块(通过为自己的数据类型编写Num/Real/etc的实例),并执行对它的各种操作.

此数据类型包含变量的特殊构造函数,可以由值或指定函数的任何值替换.其中一个目标是编写一个函数,它使用一些变量(类型对(Char,Rational))来表达这种表达式并计算表达式的结果.我们应该看看如何最好地表达函数的目标.(我的想法:该函数返回另一个函数,它接受与函数中定义的变量一样多的参数 - 似乎是不可能的).

haskell variadic-functions function-parameter polyvariadic

69
推荐指数
5
解决办法
1万
查看次数

将省略号传递给另一个可变参数函数

我有大约30个可变函数.每个人都接受一个路径作为最终参数,例如:

bool do_foo(struct *f, int q, const char *fmt, ...)
Run Code Online (Sandbox Code Playgroud)

在每个函数中,我必须检查扩展格式是否小于或等于特定大小.所以,我发现自己复制/粘贴相同的代码块来检查vsnprintf()没有打印多少个字符,相应地设置并保留errno写入.

我想要做的是编写一个函数来执行此操作,这将返回一个已知为安全大小的静态分配(扩展)字符串,或者在失败时新初始化的字符串,可以针对NULL进行检查.检查还必须确定字符串是绝对路径还是相对路径,这会影响字符串的安全大小.这是很多重复的代码,它开始闻起来.

有没有办法可以将elipsis的内容从我的函数的条目传递给另一个函数?或者我必须先调用va_start(),然后传递va_list给辅助函数?

编辑:

我完全不反对把它传递va_list给帮助者,我只是想确保没有别的东西存在.在我看来,编译器理解可变参数的开始位置,所以我只是好奇我是否可以告诉它传递它们.

c variadic-functions

68
推荐指数
2
解决办法
4万
查看次数

Varargs Java模糊调用

我对Java的varargs方法有点困惑:

public static int sum(int ...a) {
    return 0;
}

public static double sum(double ...a) {
    return 0.0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在sum()不传递任何参数的情况下调用时,则int调用了方法的版本.我不明白为什么; 通常编译器必须引发错误.

相反,当我尝试在sum没有任何参数的情况下调用时,以下代码段会生成编译器错误:

public static int sum(int ...a) {
    return 0;
}

public static boolean sum(boolean ...a) {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

java methods overloading variadic-functions

68
推荐指数
2
解决办法
1654
查看次数

差异fn(String ... args)vs fn(String [] args)

这个语法对以下内容有用:

    function(String... args)
Run Code Online (Sandbox Code Playgroud)

和写作一样吗?

    function(String[] args) 
Run Code Online (Sandbox Code Playgroud)

仅在调用此方法时有区别或是否还有其他功能?

java variadic-functions

62
推荐指数
5
解决办法
6万
查看次数