在scala类内允许的情况下,如何将“ println”不包含在方法中?

时间:2019-01-29 13:00:37

标签: scala

我是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()  
  }  
} 

4 个答案:

答案 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