假設,我們有如下定義:什麼是`object`的默認`apply`方法?
scala> trait T
defined trait T
scala> object A extends T
defined module A
然後,我們可以創建一個對象與類型T
:
scala> val t: T = A
t: T = [email protected]
沒有new
關鍵字用在這裏,因此,因此在這裏使用的apply
方法。 但是到目前爲止我們沒有定義apply
方法,所以我猜這裏使用的默認方法是apply
?但它是什麼樣子?
更新1:
在分配A
類型具有相同的變量,錯誤將被拋出:
scala> val a: A = A
<console>:9: error: not found: type A
val a: A = A
^
爲什麼相同的「把戲」不是在這裏工作?有什麼不同 ?
謝謝。當我理解你的時候,'A'的(單例)對象已經是一個完整的對象。但在另一個示例中(請參閱Update 1),將對象'A'用作普通對象時會引發錯誤。這背後的原因是什麼? – 2012-07-09 08:16:18
@JohnThreepwood:這在技術上是一個單獨的問題,但無論如何。由於'A'是一個對象(認爲是singleton),所以創建它的變量或將它作爲參數傳遞是沒有意義的(參見:def foo(a:A)')。您只需使用'A'即可訪問它。 – 2012-07-09 08:30:44