簡體   English   中英

Scala:如果未定義任何類,是否有默認類?

[英]Scala: Is there a default class if no class is defined?

根據 ,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 )顯示代碼被包裝在對象Mainmain(args:Array[String])中的代碼塊內。 您可以以argsargv訪問參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM