函数在其定义中将一些变量作为调用时传递的参数。该函数使用这些参数来计算使用该函数的一些结果。有时在某些情况下,我们不知道在运行时会将多少个参数传递给该函数?
对于这些情况,一种方法可以针对每种情况重新定义相同的功能(使功能超载)。但是这种方法效率不高。因此,在这种情况下,编程语言定义了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函数中使用命令行参数来为代码提供输入。