有没有办法可以获取函数的字符串表示形式?
val f = List(1, 2, 3, 4, 66, 11).foldLeft(55)_
f
是 type 的函数((Int, Int) => Int) => Int
,这将是我正在寻找的表示,但我无法在任何地方找到它。
当然,该toString
方法是我的第一次尝试,但它返回的只是<function1>
. scala REPL 做得对,文档也是。一定有办法吗?
问候。
有没有办法可以获取函数的字符串表示形式?
val f = List(1, 2, 3, 4, 66, 11).foldLeft(55)_
f
是 type 的函数((Int, Int) => Int) => Int
,这将是我正在寻找的表示,但我无法在任何地方找到它。
当然,该toString
方法是我的第一次尝试,但它返回的只是<function1>
. scala REPL 做得对,文档也是。一定有办法吗?
问候。
当类型在编译时已知时,您可以使用 Scalas TypeTag
:
scala> import reflect.runtime.universe._
import reflect.runtime.universe._
scala> def typeRep[A : TypeTag](a: A) = typeOf[A]
typeRep: [A](a: A)(implicit evidence$1: reflect.runtime.universe.TypeTag[A])reflect.runtime.universe.Type
scala> val f = List(1, 2, 3, 4, 66, 11).foldLeft(55)_
f: ((Int, Int) => Int) => Int = <function1>
scala> typeRep(f)
res2: reflect.runtime.universe.Type = ((Int, Int) => Int) => Int
有关TypeTag
正在做什么的详细说明,请参见另一个答案。