Scala 值類

2022-05-13 15:04 更新

使用值類,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()



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號