Как мога да разреша този прост проблем. Преобразуването на класа има въведен метод from, който взема два параметъра тип A и B и връща B от A. Дефинирах някои имплицитни елементи в придружаващия обект, за да осигуря поведение по подразбиране.
Моят проблем е, когато се опитам да препратя повикването към класа за преобразуване в друг въведен метод, който има същия подпис, той не работи. Тук в моя пример се опитвам да препратя извикването от функцията myFun към моя клас Conversion.
Получих следната грешка
- няма достатъчно аргументи за метод от: (имплицитно f: A => B)
Чудя се защо това създава проблеми. Може ли някой да ми обясни защо и как да преодолея този проблем?
Ето кода
object MyConversions {
implicit val IntToStr = (f:Int) => f.toString()
implicit val DoubleToStr = (f:Double) => f.toString()
implicit val BooleanToStr = (f:Boolean) => f.toString()
}
class Conversions{
def from[A,B](a:A)(implicit f:(A) => B) = {
f(a)
}
}
import MyConversions._;
def myFun[A,B](a:A){
// Error
new Conversions().from[A, B](a)
}
// Working
println( new Conversions().from[Int, String](3) )