2012-06-22 31 views
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傳遞給(從GenericCompanion.scala方法apply)ListBuffer [字符串]的應用方法,該方法是如何將明星傳遞給下一個方法?

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

代碼ListBuffer[String]("foo", "bar")確實工作。但似乎我無法通過s也是String*的字符串參數列表。

回答

9

你需要告訴斯卡拉解壓s

ListBuffer[String](s: _*) 

你也不需要明確的類型:

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

我有類似的情況,你的解包解決方案解決了這個問題,但是隱式轉換不會「踢入」(所以我得到類型不匹配錯誤)。是否有可能通過解包功能強制隱式轉換? –

相關問題