3 回答

TA貢獻2041條經(jīng)驗 獲得超4個贊
class C 定義一個類,就像在Java或C ++中一樣。
object O創(chuàng)建一個單例對象O作為某些匿名類的實例;它可用于保存與某些類的實例不相關的靜態(tài)成員。
object O extends T使對象O成為的實例trait T; 然后您可以通過O任何地方,這T是預期的。
如果有class C,那么類object C的伴隨對象C ; 請注意,伴隨對象不會自動成為的實例C。
另請參閱Scala文檔以獲取對象和類。
用作靜態(tài)成員的主機
大多數(shù)情況下,您需要一個object來保存無需首先實例化某個類的實例即可使用的方法和值/變量。這種用法與staticJava中的成員緊密相關。
object A {
def twice(i: Int): Int = 2*i
}
然后,您可以使用調(diào)用上述方法A.twice(2)。
如果twice是某個類的成員A,那么您需要首先創(chuàng)建一個實例:
class A() {
def twice(i: Int): Int = 2 * i
}
val a = new A()
a.twice(2)
您可以看到這是多么冗余,因為twice它不需要任何特定于實例的數(shù)據(jù)。
用作特殊的命名實例
您也可以將object自身用作類或特征的某些特殊實例。執(zhí)行此操作時,您的對象需要擴展一些對象trait才能成為其子類的實例。
考慮以下代碼:
object A extends B with C {
...
}
此聲明首先聲明一個匿名類(不可訪問),該類同時擴展了B和C,并實例化名為的此類的單個實例A。
這個裝置A可以被傳遞到期望類型的對象的功能B或C,或B with C。
的附加功能 object
Scala中還存在一些對象的特殊功能。我建議閱讀官方文檔。
def apply(...) 啟用的常規(guī)方法的無名稱語法 A(...)
def unapply(...)允許創(chuàng)建自定義模式匹配提取器
如果附帶同名的類,則對象在解析隱式參數(shù)時將扮演特殊角色
- 3 回答
- 0 關注
- 956 瀏覽
添加回答
舉報