W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
使用值類,Scala允許擴(kuò)展 AnyVal
的用戶定義的值類。
Scala 值類使我們能夠在Scala類型層次結(jié)構(gòu)的AnyVal一側(cè)編寫類。
Scala中的值類不分配運(yùn)行時對象。
值類允許我們將擴(kuò)展方法添加到類型,而不需要創(chuàng)建實(shí)例的運(yùn)行時開銷。
這是通過定義新的AnyVal子類來實(shí)現(xiàn)的。
下面說明了一個值類定義:
class SomeClass(val underlying: Int) extends AnyVal
前面的SomeClass類有一個單一的公共val參數(shù),它是基礎(chǔ)運(yùn)行時表示。
編譯時的類型是SomeClass
,但在運(yùn)行時,表示是一個Int
。
值類可以定義defs,但不能定義vals,vars或嵌套的traits類或?qū)ο蟆?
以下代碼說明了值類 SomeClass
中的 def
。
值類只能擴(kuò)展一個通用特征。
class SomeClass(val i: Int) extends AnyVal { def twice() = i*2 }
這里SomeClass是一個用戶定義的值類,它包裝Int參數(shù)并封裝兩次方法。
要調(diào)用兩次方法,請按如下所示創(chuàng)建SomeClass類的實(shí)例:
val v = new SomeClass(9) v.twice()
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: