是否可以创建一个案例类,其中一个字段依赖于另一个字段?

Ram*_*hna 2 scala case-class

我有一个案例课.

case class A(x: Int)
Run Code Online (Sandbox Code Playgroud)

我需要引进另一个变量y是依赖x,说x/2.

我可以写这样的东西:

case class A(x: Int, y: Int = x/2)
Run Code Online (Sandbox Code Playgroud)

如果没有什么是理想的解决方案?

Tom*_*Tom 6

case class A(x: Int) {
  val y = x / 2
}
Run Code Online (Sandbox Code Playgroud)

使用示例:

val a = A(10)
a.x    // 10
a.y    // 5
Run Code Online (Sandbox Code Playgroud)

编辑:如果你y的参数必须有,那么你可以重载伴随对象中的apply函数:

case class A(x: Int, y: Int)

object A {
  def apply(x: Int): A = new A(x, x / 2)
}
Run Code Online (Sandbox Code Playgroud)

您可以像以前一样使用它,A(10)但请注意,您可以使用类似的方法调用默认的apply方法A(10, 11).