我想从值向量初始化一个case类或普通类。
示例代码我现在看起来像这样:
class P(parameters : Vector[String]) {
val a: String = parameters(0)
val b: String = parameters(1)
val c: String = parameters(2)
}
我用
初始化它P(Vector[String]("1", "2", "3"))
但如果我能有一个案例类会更好:
case class P (a: String, b: String, c: String)
并且仍然能够使用给定的向量初始化它 - 不必通过构造函数进行初始化。另外,我想支持Vector的元素少于要创建的对象的情况:
P(Vector[String]("1"))
我正在寻找一种scala方式来做到这一点。
答案 0 :(得分:1)
您可以在案例类中定义其他构造函数:
case class P(a: String, b: String, c: String) {
def this(parameters: Vector[String]) =
this(parameters(0), parameters(1), parameters(2))
}
如果您使用包含少于三个元素的Vector
来调用此内容,会发生什么?
答案 1 :(得分:1)
据我所知你正在寻找这样的东西:
case class P (a: String, b: String, c: String)
object P {
def apply(v: Vector[String]): P = {
//your code to create P, probably
P(v(0), v(1), v(2))
}
}