假设我有一个方法
def f(s:String *) = s.foreach( x => println(x) )
现在我有一个数组:
val a = Array("1", "2", "3")
如何使用f
元素作为参数调用a
?
编辑:
所以给定a
,我想做以下事情:
f(a(0), a(1), a(2)) // f("1", "2", "3")
答案 0 :(得分:15)
有一个运营商:
f(a: _*)
此操作在{em> 4.6.2 The Scala Language Specification Version 2.9的重复参数章节中定义,并在 6.6函数应用程序中进一步说明:
应用程序中的最后一个参数可以标记为序列参数,例如 的
e : _*
即可。这样的参数必须对应于类型的重复参数(第4.6.2节)S *
[...]。此外,对于符合scala.Seq[T]
的某种类型T
,类型的e必须符合S
。在这 例如,通过将序列e替换为其元素来转换参数列表。
BTW您的f
功能可以简化:
def f(s:String *) = s foreach println
或更好(不鼓励等号,因为它表明该方法实际上返回了某些内容,但它“仅”返回Unit
):
def f(s:String *) {s foreach println}