【发布时间】:2016-08-27 01:57:41
【问题描述】:
我无法理解为什么下面的代码会出现类型不匹配错误 - 在这里,我使用泛型,在第 11 行它给出了类型不匹配错误。它不应该将 T 解释为 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 被推断为在第二个sn-p 中使用Int 调用,所以我希望在第一个代码sn-p 中也会发生同样的情况,但事实并非如此。为什么不呢?
【问题讨论】:
-
如果要返回
123,为什么要将返回类型声明为T? -
请从您的代码 sn-ps 中删除这些行号...
标签: scala generics type-mismatch