【发布时间】:2016-06-18 19:23:58
【问题描述】:
假设我定义了一个采用隐式 TypeTag 的函数:
def andOptionFn[A: TypeTag](g: Int => Option[A]) = {
val ttg = ScalaReflection.universe.typeTag[A]
println(ttg)
...
}
并称它为:
andOptionFn{
v =>
Some(v)
}
我希望 scala 类型推断能够获得正确的类型 TypeTag(Option(Int)),但我得到了:
TypeTag(Option(Any)) (not even a higher kind)
为什么 Scala 不能在编译时自动推断它?以及需要做哪些工作来改进它?
【问题讨论】:
标签: scala type-inference type-erasure