如何查看Scala编译器为表达式等推断的类型?我有一些带有复杂类型推断和隐式转换的代码,通过阅读代码很难看到发生了什么。
我尝试过添加
scalacOptions in Compile += "-Xprint-types"
在build.sbt中,但这没有效果。
直接使用scalac并不是很吸引人,因为我有很多依赖项。
我使用Eclipse Scala插件和ENSIME编写代码,使用SBT编译。
答案 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)
将表达式提升为非本地def
或val
,没有显式类型 - 然后它将出现在Eclipse的Outline视图中,并指定了推断类型。
然而,这不是一个理想的解决方案,因为它需要一些工作,并且在涉及递归时不能使用它。