Я учусь Scala и следующая простая программа заставили меня застряли:Missing параметра типа для расширенной функции
class ObjectPrinter[T <: AnyVal](x: T) {
def print(t: T) = { // <--- error here
case Is(i) => println("Integer: " + i)
case Ds(d) => println("Double: " + d)
case _ => println("Default")
}
case class Is(i : Int) extends ObjectPrinter[Int](i);
case class Ds(d: Double) extends ObjectPrinter[Double](d);
}
Сообщение об ошибке выглядит следующим образом:
Отсутствующего параметр типа для расширенной функции. Тип аргумента анонимной функции должен быть полностью известен. Ожидаемый тип:?
Сообщение совершенно неясно. Что они означают, отсутствующий параметр типа? Я думал, что параметр типа следует за case
, например Is(i)
. Какая функция расширена?
UPD: Я хочу вернуть функцию в зависимости от типа аргумента, переданного в качестве параметра.
'def print (t: T) = t match {...}'? В настоящее время ваш метод возвращает анонимную функцию, а 't' не используется. –