编译时类型跟踪
是否可以在 Scala 表达式周围添加一些神奇的构造,以便在编译期间打印类型?例如,有一些类、魔术函数、元编程类型,它们的作用是:
val i = 1
Some(11).map(Trace(_ + 1))
// compile
// prints: Int
Is it possible to add some magic construct around a Scala expression so that it prints the type during compilation? E.g. have some class, magic function, meta programming type, which does:
val i = 1
Some(11).map(Trace(_ + 1))
// compile
// prints: Int
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不完全是,但是这个怎么样
第一个 Trace 来自 Trace 的定义,可以忽略。相同的参数 (-Xprint:typer) 也适用于 scalac。
Not exactly, but how 'bout this
The first Trace comes from the definition of Trace and can be ignored. The same parameter (-Xprint:typer) works with scalac, too.
如果事情变得非常糟糕,你可以使用这个:
变得很难阅读,但可以准确地告诉你编译器的想法。
If things get really nasty, you can use this:
Gets difficult to read, but tells you exactly what the compiler is thinking.
像这样的东西将在运行时工作
Something like this will work at runtime
不,没有这样的事情。编译器插件也许能够做到这一点。
No, there's no such thing. A compiler plugin might be able to do it.