显示推断的 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】:

将表达式提升到非本地 defval,没有显式类型 - 然后它将出现在 Eclipse 的大纲视图中,并分配一个推断类型。

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

【讨论】:

以上是关于显示推断的 Scala 表达式类型的主要内容,如果未能解决你的问题,请参考以下文章

Scala基础学习

Kotlin函数 ⑤ ( 匿名函数变量类型推断 | 匿名函数参数类型自动推断 | 匿名函数又称为 Lambda 表达式 )

快学Scala 第一课 (变量,类型,操作符)

3天极速掌握 Scala 语言:First Day

Scala 分号

Scala基础语法