Scala 为什么不需要显式设置泛型参数?

Scala 为什么不需要显式设置泛型参数?,scala,type-inference,Scala,Type Inference,我不知道这个私有函数readValue是如何工作的: private def readValue[T](路径:字符串,v:=>T):选项[T]={ 试一试{ 方案(五) }抓住{ 案例e:ConfigException.Missing=>None case NonFatal(e)=>throw reportError(path,e.getMessage,Some(e)) } } 参数v是一个返回T的函数,并且T在如下调用时设置: readValue[String] 但是,我看到使用readV

我不知道这个私有函数
readValue
是如何工作的:

private def readValue[T](路径:字符串,v:=>T):选项[T]={
试一试{
方案(五)
}抓住{
案例e:ConfigException.Missing=>None
case NonFatal(e)=>throw reportError(path,e.getMessage,Some(e))
}
}
参数
v
是一个返回
T
的函数,并且
T
在如下调用时设置:

readValue[String]
但是,我看到使用
readValue
时没有明确定义泛型参数类型
T

def getInt(path: String): Option[Int] = readValue(path, underlying.getInt(path))
为什么不呢

readValue[Int](path, underlying.getInt(path))

i、 e.是否显式设置了
Int
?这应该是如何工作的?

底层配置对象'undernative:Config'具有返回类型为Int的getInt方法,并且此信息提供了足够的证据来推断readValue的类型参数,因此您不需要显式定义它


-id函数的示例应该很有帮助

顺便说一句,使用intelliJ,是否可以找出未明确定义类型的函数类型?@Blankman。有关这方面的信息,请参阅。