Scala中带有可变参数的函数

具有可变参数的函数

函数在其定义中将一些变量作为调用时传递的参数。该函数使用这些参数来计算使用该函数的一些结果。有时在某些情况下,我们不知道在运行时会将多少个参数传递给该函数?

对于这些情况,一种方法可以针对每种情况重新定义相同的功能(使功能超载)。但是这种方法效率不高。因此,在这种情况下,编程语言定义了varargs,这些变量用于在函数call中采用变量参数

在Scala中,还使用可变参数。在Scala中,必须使用来指示可以重复最后一个参数,即它可以是任何变量。程序将其视为该数据类型的数组,并期望用户输入多个可以视为数组的参数。为了向编译器显示此函数将接受多个参数,使用*。此星号符号表示该参数是指定数据类型的数组。

例如, Strings *表示字符串数组。

语法:

    def functionName(args: String*){
	    //要执行的代码
    }

说明:

前面的语法会初始化一个函数functionname(),该函数在其定义中使用数据类型字符串的变量参数

示例代码:

object myClass {
   def printStrings( arguments:String* ) = {
      var i : Int = 0;
      println("收到的参数数组为: ")
      for( string <- arguments ){
         println("Arg value[" + i + "] = " + string );
         i = i + 1;
      }
   }
   def main(args: Array[String]) {
      println("该程序演示了可变参数的用法。 ")
      println("首轮 :")
      printStrings("Nhooo", "is", "awesome");
      println("第二次运行:")
      printStrings("I", "Love", "programming", "in", "scala");
   }   
}

输出结果

该程序演示了可变参数的用法。 
首轮 :
收到的参数数组为: 
Arg value[0] = Nhooo
Arg value[1] = is
Arg value[2] = awesome
第二次运行:
收到的参数数组为: 
Arg value[0] = I
Arg value[1] = Love
Arg value[2] = programming
Arg value[3] = in
Arg value[4] = scala

代码说明:

前面的代码使用一个printstrings()接受可变参数(varargs)的函数。并将它们的每个值打印在单独的行中。在主函数中,代码printstrings()两次调用了该函数。第一次使用参数“'includehelp','is','awesome'”时,这次需要在数组中使用三个参数。这次第二次使用参数“我喜欢在Scala中编程”来调用该函数,此时参数的数量为5。在两种情况下,程序都可以正常执行并运行。

主要功能

main()Scala中的函数还使用varargs接受多个命令行参数。现在,由于我们熟悉变量参数功能,因此可以在main函数中使用命令行参数来为代码提供输入。