我是Scala的新手,仍然遇到一些新手(?)问题。
因此,我有一个名为Transaction
的类,其主构造函数有5个参数。事实是,我正在尝试编写一个带有String参数的1-参数构造函数,以便它从中获取其他参数并使用它们调用主构造函数(它基本上是解析字符串)。
我已经读到辅助构造函数内部的第一个调用必须是对主要构造函数的调用,那么我应该如何在没有有用数据的情况下调用它?还有什么其他方法可以解决此问题?
在这里,我粘贴类代码和失败的构造函数:
class Transaction(srcIp: String, dstIp: String, var srcPort: Int, var dstPort: Int, _protocol: String) {
def this(t_str: String) = {
val t_arr = t_str.split(',')
this(t_arr(1), t_arr(2), t_arr(3).toInt, t_arr(4).toInt, t_arr(5))
}
//primary constructor, private variables, etc
}
答案 0 :(得分:0)
Scala构造函数重载必须(仅)调用另一个构造函数,即主构造函数或辅助构造函数。这是因为Scala中的默认参数直到Scala 2.8才输入语言。
如果您想以这种方式“解析”字符串,则可以创建一个伴随对象(请参见here)并重载apply
方法以调用主构造函数(或任何重载的辅助函数)构造函数)。