scala 自动调用 case class 的构造函数,除了一个字段以外的所有字段

scala call constructor of case class with all fields except one automatically

我很好奇如何调用 scala case class 的构造函数及其所有字段(自动)

case class MyClass(a:String, b:Int, c:String)
val myThing = MyClass("a", 1, "b")

MyClass("someOtherValue", myThing.getAllTheValuesExceptOne: _*) 之类的东西对我还不起作用。

您可以使用案例 classes 的 copy 方法,它允许基于其他覆盖某些特定字段的案例创建案例 class。

case class MyClass(a:String, b:Int, c:String)
val myThing = MyClass("a", 1, "b")
val myThing2 = myThing.copy(a = "someOtherValue")

另一种选择是使用 apply 方法创建伴生对象。

object MyClass {
  def apply(a: String) = {
    new MyClass(a, 1, "AAA")
  }
}

那你就可以用

val newInstance = MyClass("BBB")