2

関数の文字列表現を取得する方法はありますか?

val f = List(1, 2, 3, 4, 66, 11).foldLeft(55)_

fは型の関数であり((Int, Int) => Int) => Int、それは私が探している表現ですが、どこにも見つかりません。

もちろん、このtoStringメソッドは私の最初の試みでしたが、返されるのは。だけです<function1>。scala REPLはそれを正しく行い、ドキュメントも同様です。方法があるに違いありませんか?

よろしく。

4

1 に答える 1

6

コンパイル時に型がわかっている場合は、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を参照してください。

于 2013-01-20T15:51:34.220 に答える