显示推断的 Scala 表达式类型
Posted
技术标签:
【中文标题】显示推断的 Scala 表达式类型【英文标题】:Showing inferred types of Scala expressions 【发布时间】:2012-03-03 01:32:31 【问题描述】:如何查看 Scala 编译器为表达式等推断出的类型?我有一些代码具有复杂的类型推断和隐式转换,仅通过阅读代码很难看出发生了什么。
我已经尝试添加
scalacOptions in Compile += "-Xprint-types"
在 build.sbt 中,但这没有效果。
直接使用 scalac 不是很吸引人,因为我有很多依赖项。
我使用 Eclipse Scala 插件和 ENSIME 编写代码,并使用 SBT 进行构建。
【问题讨论】:
【参考方案1】:应该是的
scalacOptions in Compile ++= Seq("-Xprint-types", "-Xprint:typer")
改为。
不幸的是,输出不是很可读。 :(
【讨论】:
【参考方案2】:Eclipse Scala IDE 3.0 中已经添加了这个确切的功能!
选择代码的任何部分并按 Ctrl-Shift-W T(在 Mac 上用 Cmd 替换 Ctrl)以查看推断的类型。
【讨论】:
【参考方案3】:将表达式提升到非本地 def
或 val
,没有显式类型 - 然后它将出现在 Eclipse 的大纲视图中,并分配一个推断类型。
但是,这不是一个理想的解决方案,因为它需要一些工作,并且在涉及递归时无法使用。
【讨论】:
以上是关于显示推断的 Scala 表达式类型的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin函数 ⑤ ( 匿名函数变量类型推断 | 匿名函数参数类型自动推断 | 匿名函数又称为 Lambda 表达式 )