我有一个包含多个参数的类,例如class Building(val a: Int, val b: Int, val c: Int)
。这个代码我必须更新它:
def updatedA(a: Int): Building = new Building(a, this.b, this.c)
def updatedB(b: Int): Building = new Building(this.a, b, this.c)
是否有更短的方式来获取更新的对象,如下所示?
def updatedA(newA: Int): Building = new { val a = newA } extends this // doesn't compile/ type is AnyRef instead of Building
答案 0 :(得分:7)
您是否看过copyWith()
construction mechanism?
copyWith方法利用了Scala 2.8的默认参数。 对于类中的每个字段,它都有一个默认为的参数 当前值。无论哪个参数都没有指定就会采用它们 原始价值观。我们可以使用命名参数调用该方法(也在 Scala 2.8)。
val newJoe = joe.copyWith(phone =“555-1234”)
或查看copy mechanism案例类。
/ *真正的力量是自动的复制构造函数 在案例类中生成。我可以用任何或所有副本制作副本 通过使用复制构造函数修改属性并声明哪些属性 要修改的字段* /
阶> parent.copy(right = Some(node))