gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:52:46 24 4
gpt4 key购买 nike

根据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 ) 表明代码被包裹在 main(args:Array[String]) 的代码块中。对象的 Main .您可以通过 args 访问参数或 argv .

关于Scala:如果没有定义类,是否有默认类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com