如何在Scala中转发重复的参数?

如何在Scala中转发重复的参数?,scala,Scala,在Scala(2.7)中,如果我有此函数: def foo(args: Array[String]) = for (arg <- args) println(arg) 然后编译器会抱怨: <console>:5: error: type mismatch; found : String* required: Array[String] def bar(args: String*) = foo(args)

在Scala(2.7)中,如果我有此函数:

def foo(args: Array[String]) =
  for (arg <- args) println(arg)
然后编译器会抱怨:

<console>:5: error: type mismatch;
 found   : String*
 required: Array[String]
       def bar(args: String*) = foo(args)
                                ^
:5:错误:类型不匹配;
找到:字符串*
必需:数组[字符串]
定义栏(args:String*)=foo(args)
^

我不理解这个错误,因为Scala编程手册中说函数
bar
中的
args
类型实际上是
Array[String]
。我该如何编写这样一个带有重复参数的包装函数?

如果这本书实际上将Foo*等同于Array[Foo],那就错了;通常的翻译是Seq[Foo]我第一次完全忽略了这个问题。感谢S.O.做出正确的回答!
scala> def foo(args: Array[String]) = for(arg <- args) println(arg)
foo: (args: Array[String])Unit

scala> def bar(args: String*) = foo(args.toArray)
bar: (args: String*)Unit

scala> bar("hello", "world")
hello
world
scala> def foo(args: Array[String]) = for(arg <- args) println(arg)
foo: (args: Array[String])Unit

scala> def bar(args: String*) = foo(args.toArray)
bar: (args: String*)Unit

scala> bar("hello", "world")
hello
world
scala> def fooV(args: String*) = args foreach println
fooV: (args: String*)Unit

scala> def fooS(args: Seq[String]) = fooV(args: _*)
fooS: (args: Seq[String])Unit

scala> def bar(args: String*) = fooV(args: _*)
bar: (args: String*)Unit

scala> def barS(args: Seq[String]) = args foreach println
barS: (args: Seq[String])Unit

scala> def barV(args: String*) = barS(args)
barV: (args: String*)Unit

scala> def barV(args: String*) = barS(args.toSeq)
barV: (args: String*)Unit