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

Scala:如果没有定义类,是否有默认类?

发布时间:2020-12-16 09:16:45 所属栏目:安全 来源:网络整理
导读:根据 this,Scala方法属于一个类.但是,如果我在REPL或脚本中定义一个方法,然后我使用scala执行,该方法属于哪个类? scala def hoho(str:String) = {println("hoho " + str)}hoho: (str: String)Unitscala hoho("rahul")hoho rahul 在这个例子中,该方法属于什
根据 this,Scala方法属于一个类.但是,如果我在REPL或脚本中定义一个方法,然后我使用scala执行,该方法属于哪个类?

scala> def hoho(str:String) = {println("hoho " + str)}
hoho: (str: String)Unit

scala> hoho("rahul")
hoho rahul

在这个例子中,该方法属于什么类?

解决方法

REPL将所有语句(实际上重写您的语句)自动包含在对象中.如果您使用-Xprint:typer选项打印中间代码,则可以看到它有效:

scala> def hoho(str:String) = {println("hoho " + str)}
[[syntax trees at end of typer]]// Scala source: <console>
package $line1 {
  final object $read extends java.lang.Object with ScalaObject {
    def this(): object $line1.$read = {
      $read.super.this();
      ()
    };
    final object $iw extends java.lang.Object with ScalaObject {
      def this(): object $line1.$read.$iw = {
        $iw.super.this();
        ()
      };
      final object $iw extends java.lang.Object with ScalaObject {
        def this(): object $line1.$read.$iw.$iw = {
          $iw.super.this();
          ()
        };
        def hoho(str: String): Unit = scala.this.Predef.println("hoho ".+(str))
      }
    }
  }
}

所以你的方法hoho真的是$line1.$read.$iw.$iw.hoho.然后,当您稍后使用hoho(“foo”)时,它将重写以添加包和外部对象.

附加说明:对于脚本,-Xprint:typer(-Xprint:parser)显示代码被包装在主对象(args:Array [String])中的代码块中.您可以以args或argv方式访问参数.

(编辑:李大同)

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

    推荐文章
      热点阅读