基本问题:
为什么我只能用Scala编写:
println(10)
为什么我不需要写:
Console println(10)
后续问题:
如何引入一种新方法“foo”,这种方法在任何地方都可见且可用,如“println”?
答案 0 :(得分:18)
您不需要在语句前面编写Console
,因为Scala Predef
对象(自动为任何Scala源文件导入)包含以下定义:
def println() = Console.println()
def println(x: Any) = Console.println(x)
您无法轻松创建自己随处可见的“全局”方法。您可以做的是将这些方法放在包对象中,例如:
package something
package object mypackage {
def foo(name: String): Unit = println("Hello " + name")
}
但是为了能够使用它,你需要导入包:
import something.mypackage._
object MyProgram {
def main(args: Array[String]): Unit = {
foo("World")
}
}
(注意:您可以将它放在常规对象,类或特征中,而不是包对象,只要您导入对象,类或特征的内容 - 但是包对象或多或少意味着这个目的)。