如何将star的参数传递给下一个方法?

时间:2012-06-22 13:49:27

标签: scala

scala> class A (s: String*) { val l: ListBuffer[String] = ListBuffer[String](s) }
<console>:8: error: type mismatch;
  found   : String*
  required: String
    class A(s: String*)  {val l: ListBuffer[String] = ListBuffer[String](s)}

为什么不能将参数s传递给ListBuffer [String]的apply方法

def apply[A](elems: A*): CC[A] = { ... }

(来自apply的方法GenericCompanion.scala

代码ListBuffer[String]("foo", "bar")确实有效。但似乎我无法通过s的{​​{1}}的字符串参数列表。

1 个答案:

答案 0 :(得分:9)

您需要告诉Scala解包s

ListBuffer[String](s: _*)

您也不需要显式类型:

scala> class A (s: String*) { val l = ListBuffer(s: _*) }
defined class A