Я пытаюсь построить иерархию типов для числовых типов доменов. например a Year
является Int
(который является Number
), a Percentage
является Double
, который является Number
и т.д. Мне нужна иерархия, чтобы я мог вызвать toInt
или toDouble
для значений.
Однако иерархия типов Scala для примитивных числовых типов не имеет общего предка, кроме AnyVal
. Это не содержит функции to{Int, Double}
, которые мне нужны.
Самый близкий тип, который я мог найти, - это Numeric[T]
, который, кажется, существует в основном для некоторых трюков компилятора.
В Java все числа, полученные из Number
(включая произвольные точные). Как определить интерфейс, который обслуживает числовые типы объектов в Scala?
Я сейчас взламываю его с помощью утиного ввода:
Any {
def toInt: Int
def toDouble: Double
}
который не только длинный, но и требует затрат времени исполнения. Что-нибудь лучше?