8
基本問題:加強Scala中預定義的方法
爲什麼可以用Scala編寫只是:
println(10)
爲什麼不讓我需要寫:
Console println(10)
跟進問題:
我怎樣才能引入一種新的方法「foo」,它像「println」一樣隨處可見和可用?
基本問題:加強Scala中預定義的方法
爲什麼可以用Scala編寫只是:
println(10)
爲什麼不讓我需要寫:
Console println(10)
跟進問題:
我怎樣才能引入一種新的方法「foo」,它像「println」一樣隨處可見和可用?
你不需要寫Console
在語句的前面,因爲斯卡拉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")
}
}
(注:只要您導入對象,類或特徵的內容,而不是包對象,也可以將其放入常規對象,類或特徵中,但包對象或多或少意味着用於此目的)。
謝謝。幾乎完美的答案。是否有可能避免導入?我的意思是:我可以增強這個「Predef」對象嗎? – fratnk 2010-05-04 11:15:36
包對象會自動導入到該包中的所有類和對象中。 – missingfaktor 2010-05-04 11:26:06
@fratnk:關於使用StackOverflow:您可以點擊我帖子左上角的複選標記,接受它作爲您問題的答案。 – Jesper 2010-05-04 12:55:12