2
我試圖找到對應於此Java代碼的Scala語法。假設A是一個類a有一個方法sayHi。匿名對象的Scala語法
new A().sayHi()
將根據有效的java語法完美編譯。另一方面,當我嘗試new A.sayHi()
它不在Scala中編譯。我們在Scala中有什麼語法呢?
我試圖找到對應於此Java代碼的Scala語法。假設A是一個類a有一個方法sayHi。匿名對象的Scala語法
new A().sayHi()
將根據有效的java語法完美編譯。另一方面,當我嘗試new A.sayHi()
它不在Scala中編譯。我們在Scala中有什麼語法呢?
在Scala中,人們可以使用以下中的一個:
new A().sayHi()
(new A).sayHi()
沒有括號和由new
前面時,A.sayHi
將被解釋爲一個類型,然後new A.sayHi()
將是類的類型A.sayHi
的實例化。如果A.sayHi
不是會導致編譯錯誤的類類型。
請看:
scala> class A { def sayHi() = "hi" }; object A { type sayHi = String }
defined class A
defined object A
scala> new A().sayHi()
res0: String = hi
scala> new A.sayHi() // same as `new String()`
res1: String = ""
scala> (new A).sayHi()
res2: String = hi