2012-12-04 10 views
6

Bir Charset ve bir tür dize türü olan bir kurgulayıcılı bir sınıfım var. Ben defaultCharset ve vararg ile ana kurucu çağıran sadece vararg ile bir kolaylık yapıcı istiyorum.İkincil kurucuda varargs geçişi

called constructor's definition must precede calling constructor's definition 

ve

overloaded method constructor StringMessage with alternatives: 
    (frames: String*)mypackage.StringMessage <and> 
    (charset: java.nio.charset.Charset,frames: String*)mypackage.StringMessage 
cannot be applied to (java.nio.charset.Charset, String*) 
    def this(frames: String*) = this(Charset.defaultCharset, frames) 
          ^

bu tür bir durumu modellemek için en iyi yolu nedir:

class StringMessage(charset: Charset, frames: String*) { 
    def this(frames: String*) = this(Charset.defaultCharset, frames) 
} 

Ne yazık ki göstermiştir sınıf iki hatalar veriyor?

+1

var mı? İlk hatayı görmüyorum; ve 2.10'da ikinci mesaj "java.nio.charset.Charset, Seq [String]) 'e uygulanamayacak şekilde geliştirildi, böylece Seq. –

cevap

13

Ben :_* O Seq genişletmek için derleyici bildirir

class StringMessage(charset: Charset, frames: String*) { 
    def this(frames: String*) = this(Charset.defaultCharset, frames: _*) 
} 

çalışacak inanıyorum, bu yüzden yazmış gibi görünecektir: yararsız derleyici mesajları için oy verme yeri

this(Charset.defaultCharset, frames(0), frames(1), .... 
+0

Bu bir çekicilik gibi çalıştı! – rancidfishbreath