【发布时间】:2016-04-22 19:03:23
【问题描述】:
我正在尝试为数字域类型构建类型层次结构。例如Year 是 Int(这是 Number),Percentage 是 Double,这是 Number,等等。我需要层次结构,以便我可以调用 toInt 或toDouble 值。
但是,基本数字类型的 Scala 类型层次结构除了 AnyVal 之外没有共同的祖先。这不包含我需要的to{Int, Double} 函数。
我能找到的最接近的类型是Numeric[T],它的存在似乎主要是为了一些编译器诡计。
在 Java 中,所有来自Number 的数字(包括任意精度的数字)。 如何在 Scala 中定义一个满足数字类型对象的接口?
我目前正在用鸭子打字来破解它:
Any {
def toInt: Int
def toDouble: Double
}
这不仅冗长,而且会产生运行时反射成本。有没有更好的?
【问题讨论】:
-
在
Year上调用toDouble的用例是什么? -
@BenJames 没有......这只是说明性的。
-
嗯,
Numerictypeclass 确实是要走的路,但 Scala 仍然使用 Java 的Number类,所以你也可以使用它。
标签: scala