【发布时间】:2013-11-08 14:16:52
【问题描述】:
我想知道 Scala 中是否有规则或“最佳实践”来覆盖应用/取消应用。我对持有以下属性是否是一个好主意特别感兴趣:
给定案例类 C(x: T),对于所有 x,Some(x) == C.unapply(C.apply(x))。
我问的原因是因为我计划使用以下代码来确保 BigDecimal 的精度为 16。
class BoundedBigDecimal(private val bd: BigDecimal) extends Proxy {
val self: BigDecimal = bd setScale (BoundedBigDecimal.PRECISION)
}
object BoundedBigDecimal {
val PRECISION = 16
def apply(bd: BigDecimal) = new BoundedBigDecimal(bd)
def unapply(bbd: BoundedBigDecimal) = Some(bbd.self)
}
如您所见,该属性不一定在这里成立。
是吗:
1) 理想情况下应该在一般情况下强制执行的属性?
2) 做我想做的事情的正确方法?
谢谢!
【问题讨论】:
标签: scala case-class