如何使用Array [String]元素调用String *的方法

时间:2011-10-07 20:09:00

标签: scala

假设我有一个方法

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")

1 个答案:

答案 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}