大多数编程语言都为函数提供了可变长度参数迁移,Scala不是例外。它允许我们指出函数的最后一个参数是可变长度的参数。它可以重复多次。它允许我们指出函数的最后一个参数是可变长度的参数,因此它可以被重复多次。我们可以传递尽可能多的参数。这允许程序员将可变长度的参数列表传递给函数。在函数内部,声明的args类型实际上保存为数组[Datatype],例如可以声明为类型String*实际上是Array[String]。
注意 :我们将*放在最后一个参数上, 以使其可变长度。
句法 : -
def Nameoffunction(args: Int *) : Int = { s foreach println. }
以下是varargs的一些限制:
列表中的最后一个参数必须是重复参数。
def sum(a:Int, b:Int, args:Int *)
包含varargs的方法中的任何参数都没有默认值。
所有值都必须是相同的数据类型, 否则会出错。
> sum(5, 3, 1000, 2000, 3000, "一个")
错误:类型不匹配;
找到:字符串("一个")
要求:整数
在主体args内部是一个数组, 因此所有值都打包到一个数组中
示例:
//Scala program of varargs
object GFG
{
//Driver code
def main(args : Array[String])
{
//Calling the function
println( "Sum is: " + sum( 5 , 3 , 1000 , 2000 , 3000 ));
}
//declaration and definition of function
def sum(a : Int, b : Int, args : Int *) : Int =
{
var result = a + b
for (arg <- args)
{
result + = arg
}
return result
}
}
输出:
Sum is: 6008
在上面的例子中,我们可以看到函数的最后一个参数是可变长度的参数。这里1000是可变长度参数。参数arg被添加到result变量中。names参数的类型是Integer。
示例:
//Scala program of varargs
object GFG
{
//Driver code
def main(args : Array[String])
{
//calling of function
printGeek( "Geeks" , "for" , "geeks" )
}
//declaration and definition of function
def printGeek(strings : String*)
{
strings.map(println)
}
}
输出:
Geeks
for
geeks
在上面的示例中, 我们使用*语法, 因此它是一个可变参数。名称参数的类型String.