Scala Varargs
大多数编程语言都为我们提供了可变长度的参数移动性, Scala 也不例外。它允许我们表明函数的最后一个参数是一个可变长度的参数,它可以重复多次。它允许我们表明函数的最后一个参数是一个可变长度的参数,所以它可以重复多次。我们可以传递任意多的参数。这使得程序员可以向函数传递可变长度的参数列表。在函数内部,声明的参数类型实际上被保存为数组[数据类型]
,例如可以声明为 String 类型,实际上是数组[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, “one”)
error: type mismatch;
found : String(“one”)
required:Int -
在主体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 被添加到 结果 变量中。名称参数的类型是 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