在一个曲子中传递相同类型变量的多个
Passing in multiple of the same type variables in one fuction
在某些语言中,我们能够声明多个相同类型的变量,例如:
int a,b,c,d;
尽管有可能以相同的方式将它们传递到函数/方法中?例如在C
中template<class ItemType>
void add6(ItemType one,two,three,four,five,six){
//some very interesting code
}
或者您必须在每个单元前键入itemType?如果我标记的语言(C 和Java)无法做到这一点,还有其他可以吗?
如果一般可以做到这一点,可以做任何情况吗?
也有这个名字吗?
谢谢!
edit :我注意到我要的东西不清楚,我将澄清它
做
int a,b,c,d;
我一次声明所有四个变量,主要是因为键入时它比这样做更快:
int a;
int b;
int c;
int d;
我试图理解的是,同一概念是否适用于函数签名。例如做
void func(int a,b,c,d){
//some interesting code
}
而不是
void func(int a, int b, int c, int d){
//some interesting code
}
再次感谢!
使用可变长度参数列表语法(请参阅 @hungvo的答案)您可以声明Java和C 中同一类型的未指定的 trifing 参数。但是,对于参数列表正面的单独命名的参数,您必须与每个参数名称一起编写类型。
但是,其他一些语言,例如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)
{
...
}
我想您要将多个参数发送到方法
您可以使用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
中的变异模板#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;
}
您可以使用varargs:
public void varargs(Object ... args)
然后您可以打电话给它:
varargs(new Object(), new Object());
vararg不会限制要将对象的数量放入参数中。
Java将自动将所有传递的对象存储到数组中,因此您可以将vararg视为数组,例如。您可以通过vararg(数组)中的每个元素迭代。
您可以将数组放入vararg中,但要确保数组的类型与vararg的类型相同。如果将数组放入对象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
}
- 取消引用结束指针到数组类型的一个
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 指针数据类型变量如何包含对象?
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 如何为结构类型变量赋值
- C++使用cin给变量一个非整数的值
- 如何将字符类型变量附加到字符串中?
- 共享或私有 openmp 代码中的结构化类型变量
- 有没有办法在 c++ 中制作类型变量?
- 从其他类声明类类型变量会给出 C2143 错误(在"*"之前缺少";")
- 如何检查类中定义的枚举类型变量是否被分配给?
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 是否可以在没有结构的情况下创建新的类型变量?
- 为什么类型变量;不调用默认 CTR
- 在一个曲子中传递相同类型变量的多个
- 如何创建一个未知数变量和未知类型变量的构造函数
- 基于宏定义具有多个类型的一个变量的可能性
- 在另一个类中实例化具有相同构造函数的一组类中的类类型变量
- 在c++中基于另一个变量类型派生一个变量类型