【发布时间】:2015-05-15 05:37:43
【问题描述】:
是否可以在 Scala 构造函数上覆盖“val”类型?
给定一个这样的类:
class GPPerson (id: Option[GPID], created: Option[DateTime], active: Boolean, primaryEmail: String)
我想创建一个基本上可以做到这一点的构造函数:
if (created == None) created = new DateTime
换句话说,如果提供了 None 值,请将其替换为 DateTime 实例。问题是,我试图避免使用伴随对象,并且“创建”对象需要是“val”(不能使其成为“var”)。
【问题讨论】:
-
为什么要避免使用伴随对象?这有点……你是怎么做的。
-
伴生对象会使事情复杂化。这并非不可能,但就像我说的“尽量避免”。这些是 Slick 中的 TableQuery 类,并且引入伴随对象会导致隐式对话中断......(例如, tupled() 方法由于 apply() 方法而“丢失”)。这可以通过实现一个显式的 tupled() 来解决,但是......这基本上是我们所有模型的模板,所以我试图让它尽可能简单。
标签: scala