【发布时间】:2017-02-03 02:26:49
【问题描述】:
假设我们要定义 3 个整数参数的案例类 A:b、c 和 d。 b 和 c 必须指定,d 被指定或默认等于c + 1。
我会这样定义:
case class A(b: Int, c: Int, d = c + 1)
但这不起作用。正确的形式是什么?
据我所知,这在 Scala 中是可能的,但我不记得如何做到这一点。
【问题讨论】:
-
我不确定这在 Scala 中是否可行。一种选择是在其伴随对象中为
A定义一个apply,该对象接受两个参数并将默认值设置为最后一个值。 -
@JSchlather 就是这样。将此作为答案提交,我会批准。
-
@JSchlather 有可能,只是对案例类没有那么有用。
-
@AlexeyRomanov 嗯,我看到我也在尝试使用括号,但无法让它工作。您必须将其标记为 val 才能使其正常工作。你知道这是为什么吗?
-
@JSchlather 它可以在没有
val的情况下工作,但它只是一个普通的构造函数参数:它只能在类的主体内使用。案例类只会自动生成第一个列表val中的参数。
标签: scala class default-value