Я не могу понять, почему приведенный ниже код дает ошибку несоответствия типа - Здесь я использую generics, а в строке 11 он дает ошибку несоответствия типа. Разве это не должно интерпретировать Т как Int.Почему я получаю ошибку типа-несоответствия, здесь?
object FunctionParamGeneric {
def main(args: Array[String]) : Unit= {
exec[Int](Fun[Int])
}
def exec[T](f:() => T) : T = {
println("Inside exec")
f()
}
def Fun[T]() : T = {
println("Inside Fun with key ")
123
}
}
Однако, если я
object FunctionParamGeneric {
def main (args: Array[String]) : Unit= {
exec[Int](() => 1)
}
def exec[T](f:() => T) : T = {
println("Inside exec")
f()
}
}
Он отлично работает. Поскольку f
вызывается с номером Int
во втором фрагменте, я бы ожидал, что то же самое произойдет в первом фрагменте кода, но это не тот случай. Почему нет?
Если вы хотите вернуть '123', почему вы хотите объявить тип возврата как' T'? –
Пожалуйста, удалите эти номера строк из фрагментов кода ... – Jubobs