Мне нужно конвертировать из любого в базовые числовые типы, такие как Int или Double Я реализовал эти преобразования, используя импликации Scala. Мой код похож на этот:
def convertAny[T](any: Any)(implicit run: Any => Option[T]) = run.apply(any)
implicit def anyToDouble(any: Any) = Try(any.asInstanceOf[Double]).toOption
implicit def anyToInt(any: Any) = Try(any.asInstanceOf[Int]).toOption
Проблема в том, что мне нужно выполнить эти преобразования внутри обобщенной функции, подобной этой:
def doStuffAndConvert[T](i: Any): Option[T] = {
// Some pre-processing
println("Processing data...")
convertAny[T](i)
}
Это вызов doStuffAndConvert
:
doStuffAndConvert[Double](a)
Однако компилятор выдает эту ошибку:
Error:(40, 18) No implicit view available from Any => Option[T].
convertAny[T](i)
Я пытался помочь компилятору, обернув типы Int и Double и ограничив универсальный тип T
, но это не сработало.
Как я мог это исправить?
Спасибо.