加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如果没有给出变量的类型,我如何确定?

发布时间:2020-12-16 19:11:56 所属栏目:安全 来源:网络整理
导读:假设,我们有类似的东西: val x = "foo".charAt(0) 让我们进一步假设,我们不知道方法charAt(0)的返回类型(当然,在Scala API中描述).有没有办法,我们可以找出变量x在其定义之后具有哪种类型以及何时未明确声明? 更新1: 我最初的问题不够精确:我想知道(出于
假设,我们有类似的东西:

val x = "foo".charAt(0)

让我们进一步假设,我们不知道方法charAt(0)的返回类型(当然,在Scala API中描述).有没有办法,我们可以找出变量x在其定义之后具有哪种类型以及何时未明确声明?

更新1:
我最初的问题不够精确:我想知道(出于调试原因)变量的类型.也许有一些编译器选项可以看看Scala的类型推断声明了什么类型的变量?

解决方法

假设您在名为Something.scala的源文件中包含以下内容:

object Something {
  val x = "foo".charAt(0)
}

您可以使用-Xprint:typer编译器标志在编译器的typer阶段之后查看程序:

$scalac -Xprint:typer Something.scala
[[syntax trees at end of typer]]// Scala source: Something.scala
package <empty> {
  final object Something extends java.lang.Object with ScalaObject {
    def this(): object Something = {
      Something.super.this();
      ()
    };
    private[this] val x: Char = "foo".charAt(0);
    <stable> <accessor> def x: Char = Something.this.x
  }
}

你也可以使用:在REPL中输入:

scala> :type "foo".charAt(0)
Char

scala> :type "foo".charAt _
Int => Char

正如Luigi Plinge在上面的评论中指出的那样,您的IDE也可以提供更好的方式来获取这些信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读