在一个曲子中传递相同类型变量的多个

Passing in multiple of the same type variables in one fuction

本文关键字:类型变量 一个      更新时间:2023-10-16

在某些语言中,我们能够声明多个相同类型的变量,例如:

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,该过程使用类型INTEGERINTEGERINTEGERREAL(按此顺序)进行参数:

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
}