📜  斯卡拉可变参数

📅  最后修改于: 2022-05-13 01:54:37.943000             🧑  作者: Mango

斯卡拉可变参数

大多数编程语言为我们提供了对函数的可变长度参数移动性, 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