斯卡拉可变参数
大多数编程语言为我们提供了对函数的可变长度参数移动性, Scala也不例外。它允许我们指示函数的最后一个参数是可变长度参数。它可能会重复多次。它允许我们指示函数的最后一个参数是可变长度参数,因此它可以重复多次。我们可以传递任意数量的参数。这允许程序员将可变长度的参数列表传递给函数。在函数内部,声明中的 args 类型实际上保存为 Array[Datatype] 例如可以声明为类型String*实际上是Array[String] 。
注意:-我们将 * 放在最后一个参数上以使其长度可变。
句法 : -
def Nameoffunction(args: Int *) : Int = { s foreach println. }
以下是 varargs 的一些限制:
- 列表中的最后一个参数必须是重复参数。
def sum(a :Int, b :Int, args: Int *)
- 包含可变参数的方法中的任何参数都没有默认值。
- 所有值必须是相同的数据类型,否则会出错。
> 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被添加到结果变量中。 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
在上面的示例中,我们使用*语法定义了它,因此它是一个变量参数。 names 参数的类型是String 。