我试图发现在给定场景中使用值类或案例类之间的区别。假设我想将整数 mod 5 建模为唯一数据类型。问题是我应该从哪一个开始...
class IntegerMod5(val value: Int) extends AnyVal
case class IntegerMod5(value: Int)
无论如何,我似乎可以Numeric
相当容易地创建一个实现。那么,使用案例类方法,我可以简单地做到这一点:
case class IntegerMod5(value: Int)(implicit ev: Numeric[IntegerMod5]) {
import ev.mkNumericOps
}
但是,对于值类,这似乎是一项更加困难的尝试,主要是因为这样做的好处是避免了对象创建。因此,像
implicit class IntegersMod5Ops(value: IntegerMod5)(implicit ev: Numeric[IntegerMod5]) {
import ev.mkNumericOps
}
似乎在很大程度上违背了目的。(实际上不确定它是否有效。)
问题是可以Numeric
与值类一起使用,还是我必须硬着头皮使用案例类?