我是Scala的新手,在Scala中,我发现即使不是变量或方法,也可以直接在类内编写println,这怎么可能?
即使println是一个方法,那么为什么我们不按方法通常所要求的那样在类中定义它呢?为什么尽管是一种方法,却不允许它直接在Java类中使用,而在Scala中允许呢?
例如
class Hero {
println("running fine...") // Why is this println allowed in scala when its not inside a function?
}
object MainObject{
def main(args: Array[String]){
new Hero()
}
}
答案 0 :(得分:5)
基本上,它在Class构造函数中运行。除了变量和函数声明外,Class中的任何代码都是构造函数的代码。
答案 1 :(得分:4)
您可以直接在类内部编写任何语句,只要实例化该类,该语句就会运行。
答案 2 :(得分:2)
打开编辑器并开始键入代码时,您会发现有些东西已经可用,有些需要导入。因此,所有这些无需导入即可使用的东西都存在于scala.Predef包中。
println
是scala编译器在scala.Predef软件包中提供的方法之一。
def println() = Console.println()
如果您检查了scala文档,则println方法会在内部调用Console对象以在屏幕上打印内容。
答案 3 :(得分:0)
我是Scala的新手,在Scala中,我发现即使不是变量或方法,也可以直接在类内编写println,这怎么可能?
您错了:println
是一种方法,这就是为什么这是可能的。 Here is the documentation for scala.Predef.println
。