假设我们要定义3个整数参数的案例类A
:b
,c
和d
。必须指定b
和c
,默认情况下,d
应指定或视为等于c + 1
。
我将其定义如下:
case class A(b: Int, c: Int, d = c + 1)
但这不起作用。什么是正确的形式?
据我所知,Scala可以实现这一点,但我无法记住如何做到这一点。
答案 0 :(得分:3)
runas /netonly /user:<account> devenv.exe
但是!对于方法和非case class A(b: Int, c: Int)(val d: Int = c + 1)
A(1, 1)().d // 2
类,这是一个很好的解决方案。但是,对于案例类,这几乎肯定不会达到您想要的效果,因为自动生成的方法(case
,equals
,hashCode
和apply
)只关心第一个参数列表。因此,对于这种情况,请遵循@ JSchlather的建议。
答案 1 :(得分:3)
一个简单的解决方案是对具有所需替换的伴随对象进行应用。
case class A(b: Int, c:Int, d: Int)
object A {
def apply(b: Int, c:Int): A = A(b, c, c + 1)
}