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}}的字符串参数列表。
答案 0 :(得分:9)
您需要告诉Scala解包s
:
ListBuffer[String](s: _*)
您也不需要显式类型:
scala> class A (s: String*) { val l = ListBuffer(s: _*) }
defined class A