我有一个案例课.
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)
如果没有什么是理想的解决方案?
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).