作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何获得调用泛型函数的实际类型?
下面的例子应该打印给定函数的类型 f
返回:
def find[A](f: Int => A): Unit = {
print("type returned by f:" + ???)
}
find
用
find(x => "abc")
调用我想得到“f:String 返回的类型”。如何在 Scala 2.11 中实现
???
?
最佳答案
使用 TypeTag
.当您需要隐式 TypeTag
时对于类型参数(或尝试为任何类型查找一个),编译器会自动生成一个并为您填写值。
import scala.reflect.runtime.universe.{typeOf, TypeTag}
def find[A: TypeTag](f: Int => A): Unit = {
println("type returned by f: " + typeOf[A])
}
scala> find(x => "abc")
type returned by f: String
scala> find(x => List("abc"))
type returned by f: List[String]
scala> find(x => List())
type returned by f: List[Nothing]
scala> find(x => Map(1 -> "a"))
type returned by f: scala.collection.immutable.Map[Int,String]
def find[A](f: Int => A)(implicit tt: TypeTag[A]): Unit = {
println("type returned by f: " + typeOf[A])
}
关于scala - 如何在 Scala 中获取泛型函数的实际类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32228620/
我是一名优秀的程序员,十分优秀!