说我有一个案例类:
case class car1 (
var wheels: Map[String, String] = Map[String, String](),
var tire: String = "",
var window: String = ""
) {}
我只是想将其实例转换为另一个case类,而一个变量wheels
的类型只有一个差异,而所有其他值都相同:
case class car2 (
var wheels: Array[(String, String)],
var tire: String = "",
var window: String = ""
) {}
Scala中最好的方法是:
1.将所有样板默认值抽象为一个结构
2.在两个类之间进行转换,以便转换可以更改wheels
值的类型
我想将car1
的实例转换为car2
,以便将标准转换函数应用于滚轮。
答案 0 :(得分:2)
2。尝试
case class car1 (
var wheels: Map[String, String] = Map[String, String](),
var tire : String = "",
var window: String = ""
) {
def toCar2: car2 = car2(wheels.toArray, tire, window)
}
1。尝试
def default[A](implicit factory: Factory[_, A]): A = factory.newBuilder.result()
case class car1 (
var wheels: Map[String, String] = default,
var tire : String = default,
var window: String = default
) {
def toCar2: car2 = car2(wheels.toArray, tire, window)
}
case class car2 (
var wheels: Array[(String, String)] = default,
var tire : String = default,
var window: String = default
) {}
Scala 2.13。
答案 1 :(得分:2)
我会在apply
的{{1}}中添加一个companion object
函数:
car2
用法:
object car2 {
def apply(car1: car1): car2 =
car2(car1.wheels.toArray, car1.tire, car1.window)
}