【发布时间】:2020-08-03 00:17:40
【问题描述】:
假设我有一个标记类型,例如:
import shapeless.tag.@@
import shapeless.tag
trait VolumeTag
type Volume = Double @@ VolumeTag
def Volume(value: Double): Volume = tag[Volume][Double](value)
现在,我遇到的问题是,例如,当我添加两个 Volume 类型的对象时,我得到一个双精度数。如何重新定义+ 运算符,使两个卷的返回值为一个卷?
我尝试添加一个新特征,例如。 VolumeOperations 为 Volume 类型的对象重新定义 +。但是我无法在不使用.isInstanceOf[Volume] 的情况下实现+。
是否可以在不强制转换的情况下实现这一目标?
【问题讨论】:
标签: scala types operator-overloading shapeless