W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
前面我們給出了 Scala 的類的一個關(guān)系圖:
在這張圖的最下方我們可以看到有兩個類,scala.Null 和 scala.Nothing。 這兩個類的作用是 Scala 支持統(tǒng)一方式用來處理面向?qū)ο蟮囊恍┻吔乔闆r。因?yàn)樗鼈冊陬悓哟螆D的下方,因此也稱為底層類型。
類 Null 代表 null 引用,它是所有引用類(每個由 AnyRef 派生的類)的子類。Null 和值類型不兼容,也就是比如說,你不能把 null 賦值給一個整數(shù)類型變量:
scala> val i:Int=null
<console>:7: error: an expression of type Null is ineligible for implicit conversion
val i:Int=null
Nothing 類型為圖中類層次關(guān)系的最下方,它是所有其他類的子類,然而這個類型沒有任何實(shí)例(也就是沒有任何值對應(yīng) Nothing 類型)前面提到,Nothing 類型的一個用法是示意應(yīng)用程序非正常終止,比如 Predef 的有一個 error 方法:
def error(message:String) :Nothing =
throw new RuntimeException(message)
error 的返回類型就是 Nothing,告訴調(diào)用者該方法沒有正常退出(拋出異常)。正因?yàn)?Nothing 為所有其它類型的子類,你可以靈活使用如 error 這樣的函數(shù)。比如:
def divide(x:Int,y:Int):Int=
if(y!=0) x/y
else error("Cannot divide by Zero")
if “then”分支的類型為 Int(x/y),else 分支的類型為 error 返回值,其類型為 Nothing,因?yàn)?Nothing 為所有類型的子類,它也是 Int 的子類,因此 divide 的類型為 Int。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: