【发布时间】:2015-10-29 23:16:56
【问题描述】:
在 Scala 中,我正在尝试:
import scala.reflect.runtime.{universe => ru}
def foo[T <: Any]: ru.WeakTypeTag[T] = ru.weakTypeTag[String]
但这产生了我:
<console>:34: error: type mismatch;
found : reflect.runtime.universe.WeakTypeTag[String]
required: reflect.runtime.universe.WeakTypeTag[T]
def foo[T <: Any]: ru.WeakTypeTag[T] = ru.weakTypeTag[String]
这里有什么?我比较确定String 应该满足T 派生自Any 的类型约束...
我猜String 未能绑定到T 类型参数。在我的用例中,也可能会返回其他类型,我不确定如何在执行函数之前预先向编译器提供答案,如果这是它所期望的。
【问题讨论】:
-
定义返回类型时可以使用通配符:
def foo[T <: Any]: ru.WeakTypeTag[_] = ru.weakTypeTag[String] -
哈,太棒了,谢谢。您介意将其发布为答案吗? :)