显示Scala表达式的推断类型

时间:2012-02-10 15:29:44

标签: eclipse scala sbt

如何查看Scala编译器为表达式等推断的类型?我有一些带有复杂类型推断和隐式转换的代码,通过阅读代码很难看到发生了什么。

我尝试过添加

scalacOptions in Compile += "-Xprint-types"
在build.sbt中

,但这没有效果。

直接使用scalac并不是很吸引人,因为我有很多依赖项。

我使用Eclipse Scala插件和ENSIME编写代码,使用SBT编译。

3 个答案:

答案 0 :(得分:5)

需要

scalacOptions in Compile ++= Seq("-Xprint-types", "-Xprint:typer")

代替。

不幸的是输出不太可读。 :(

答案 1 :(得分:2)

Eclipse Scala IDE 3.0中添加了这个确切的功能!

选择代码的任何部分,然后按Ctrl-Shift-W T(在Mac上替换Ctrl by Cmd)以查看推断类型。

答案 2 :(得分:0)

将表达式提升为非本地defval,没有显式类型 - 然后它将出现在Eclipse的Outline视图中,并指定了推断类型。

然而,这不是一个理想的解决方案,因为它需要一些工作,并且在涉及递归时不能使用它。