gpt4 book ai didi

scala - 在辅助构造函数中传递可变参数

转载 作者:行者123 更新时间:2023-12-03 04:22:02 24 4
gpt4 key购买 nike

我有一个带有构造函数的类,该构造函数由字符集和字符串类型的可变参数组成。我想要一个仅带有 vararg 的便捷构造函数,它将使用 defaultCharset 和 vararg 调用主构造函数。

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

不幸的是,我展示的类(class)给出了两个错误:

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

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)
^

模拟这种情况的最佳方法是什么?

最佳答案

我确实相信 :_* 会起作用

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

它指示编译器扩展 Seq,所以它看起来像你写的:

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

关于scala - 在辅助构造函数中传递可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13709038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com