是否可以在 Scala 表达式周围添加一些魔法构造,以便在编译期间打印类型?例如。有一些类、魔术函数、元编程类型,它可以:
val i = 1
Some(11).map(Trace(_ + 1))
// compile
// prints: Int
最佳答案
不完全是,但是这个怎么样
$ cat Test.scala
def Trace[T] = identity[T] _
val i = 1
Some(11) map {x => Trace(x + 1)}
$ scala -Xprint:typer Test.scala 2>&1 | egrep --o 'Trace\[.*\]'
Trace[T >: Nothing <: Any]
Trace[Int]
第一个 Trace 来自 Trace 的定义,可以忽略。相同的参数 (-Xprint:typer) 也适用于 scalac。
关于scala - 编译时类型跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992456/