Ich bin nicht in der Lage zu verstehen, warum der folgende Code Typ Mismatch-Fehler gibt - Hier verwende ich Generika und bei Zeile 11 gibt es Typ Mismatch-Fehler. Sollte es nicht T als Int interpretieren?Warum erhalte ich hier einen Typ-Mismatch-Fehler?
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
}
}
Wenn ich jedoch
object FunctionParamGeneric {
def main (args: Array[String]) : Unit= {
exec[Int](() => 1)
}
def exec[T](f:() => T) : T = {
println("Inside exec")
f()
}
}
tun es funktioniert gut. Da f
im zweiten Snippet als Int
bezeichnet wird, würde ich erwarten, dass dasselbe im ersten Code-Snippet passiert, aber das ist nicht der Fall. Warum nicht?
Wenn Sie '123' zurückgeben möchten, warum möchten Sie den Rückgabetyp als' T' deklarieren? –
Bitte entfernen Sie diese Zeilennummern aus Ihren Code-Schnipsel ... – Jubobs