5
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其中 is also的字符串的参数列表String*

4

1 回答 1

9

您需要告诉 Scala 解包s

ListBuffer[String](s: _*)

您也不需要显式类型:

scala> class A (s: String*) { val l = ListBuffer(s: _*) }
defined class A
于 2012-06-22T14:00:54.797 回答