在某些语言中,我们能够声明多个相同类型的变量,如下所示:
int a,b,c,d;
是否可以以相同的方式将它们传递给函数/方法? E.G in C ++
template<class ItemType>
void add6(ItemType one,two,three,four,five,six){
//some very interesting code
}
或者你必须在每一个前面键入ItemType吗?如果我标记的语言(C ++和Java)不能这样做,还有其他可以吗?
如果可以这样做,是否会出现这种情况?
还有这个名字吗?
谢谢!
++++++++++++++
编辑:我注意到我要求的内容尚不清楚,我将澄清它
做的时候
int a,b,c,d;
我一次声明所有这四个变量,主要是因为它在输入时比这样做更快:
int a;
int b;
int c;
int d;
我想要了解的是,如果相同的概念适用于函数签名。 E.G做
void func(int a,b,c,d){
//some interesting code
}
而不是
void func(int a, int b, int c, int d){
//some interesting code
}
再次感谢!
答案 0 :(得分:1)
我认为你想向方法
发送多个参数您可以使用varargs
在Java中执行此操作实施例
public static void print( Object... values){
for(Object c : values){
System.out.println(c);
}
}
print("string1","string2",1,2,3,4,5);
=================
在C ++中使用variadic templates
#include <string>
#include <iostream>
void Output() {
std::cout<<std::endl;
}
template<typename First, typename ... Strings>
void Output(First arg, const Strings&... rest) {
std::cout<<arg<<" ";
Output(rest...);
}
int main() {
Output("I","am","a","sentence");
Output("Let's","try",1,"or",2,"digits");
return 0;
}
答案 1 :(得分:1)
使用可变长度参数列表语法(请参阅@ HungVo的答案),您可以在Java和C ++中声明相同类型的未指定数量的尾随参数。 但是,对于参数列表前面的单独命名的参数,您必须将类型与每个参数名称一起编写。
但是,其他一些语言,例如Pascal和Ada, do 提供了一个参数列表语法,允许您声明多个相同类型的连续参数,而不必重复类型名称。例如,在Pascal中,您可以定义一个过程aProc
,该过程接受类型INTEGER
,INTEGER
,INTEGER
和REAL
的参数(按此顺序) ):用:
PROCEDURE aProc (a, b, c: INTEGER; x: REAL);
BEGIN
...
END;
Ada等价物几乎相同:
PROCEDURE aProc (a, b, c: INTEGER; x: FLOAT) IS
BEGIN
...
END aProc;
但是在Java(或C ++)中,你必须写:
void aProc(int a, int b, int c, float x)
{
...
}
答案 2 :(得分:0)
您可以使用Varargs:
public void varargs(Object ... args)
然后你可以用:
来调用它varargs(new Object(), new Object());
vararg不限制要放入参数的对象数。
Java会自动将所有传递的对象存储到数组中,因此您可以将vararg视为数组,例如。您可以迭代vararg(数组)中的每个元素。
您可以将数组放入vararg,但要确保数组的类型与vararg的类型相同。如果将数组放入Object vararg并且数组的类型不是对象,Java可能会将该数组视为单个元素而不是元素数组。请考虑以下代码:
public static boolean test(Object ... args) {
for (Object object : args) {
if (object.getClass().isArray()) {
return true;
}
}
return false;
}
public static void main(String[] args) {
System.out.println(test(new int[] {1, 2}));
//Prints true
}