ran*_*ath 6 constructor scala variadic-functions
我有一个带有构造函数的类,它由一个Charset和一个String类型的变量组成.我想要一个只有vararg的方便构造函数,它将使用defaultCharset和vararg调用主构造函数.
class StringMessage(charset: Charset, frames: String*) {
def this(frames: String*) = this(Charset.defaultCharset, frames)
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我所展示的课程有两个错误:
called constructor's definition must precede calling constructor's definition
Run Code Online (Sandbox Code Playgroud)
和
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)
^
Run Code Online (Sandbox Code Playgroud)
模拟这种情况的最佳方法是什么?
om-*_*nom 13
我相信这:_*
会奏效
class StringMessage(charset: Charset, frames: String*) {
def this(frames: String*) = this(Charset.defaultCharset, frames: _*)
}
Run Code Online (Sandbox Code Playgroud)
它指示编译器扩展Seq,所以它看起来像你写的:
this(Charset.defaultCharset, frames(0), frames(1), ....
Run Code Online (Sandbox Code Playgroud)