在哪里放置Scala案例类的复杂逻辑默认值

时间:2018-03-28 16:16:24

标签: scala

我是Scala的新手,我想了解,在哪里放置Case Classes默认值的复杂逻辑。

case class Job (name: String, timeStamp: Long = <something more complex>) {
...
}

我应该把更复杂的逻辑放在哪里? (例如,不只是分配值)

我是否需要覆盖apply方法或创建伴随对象?

1 个答案:

答案 0 :(得分:6)

只需向协同对象添加其他apply方法:

case class Job(name: String, timeStamp: Long)

object Job {
  def apply(name: String): Job = new Job(name, System.currentTimeMillis)
}

val j1 = Job("foo", 345678L)
val j2 = Job("bar")

现在,在apply内,您可以自由地进行任意复杂的计算,这些计算也可以依赖name,而不需要多个参数列表。