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。有关这方面的信息,请参阅。