Я пытаюсь построить иерархию типов для числовых типов доменов. например 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
}
который не только длинный, но и требует затрат времени исполнения. Что-нибудь лучше?