Scala Varargs可变参数用法详细介绍和示例

2021年4月9日17:01:27 发表评论 1,050 次浏览

大多数编程语言都为函数提供了可变长度参数迁移,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.


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: