新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
簡單接觸Scala底層類型
在圖釋11.1類型層級的底部你看到了兩個類scala.Null和Scala.Nothing。它們是用統(tǒng)一的方式處理某些Scala的面向?qū)ο箢愋拖到y(tǒng)的“邊界情況”的特殊類型。

編輯推薦:Scala編程語言專題
類Null是null類型的引用;它是每個引用類(就是說,每個繼承自AnyRef的類)的子類。Null不兼容值類型。你不可,比方說,把null值賦給整數(shù)變量:
- scala>val i: Int = null
- < console>:4:error:typemismatch;
- found:Null(null)
- required:Int
類型Nothing在Scala的類層級的***端;它是任何其它類型的子類型。然而,根本沒有這個類型的任何值。要一個沒有值的類型有什么意思呢?7.4節(jié)中討論過,Nothing的一個用處是它標明了不正常的終止。例如Scala的標準庫中的Predef對象有一個error方法,如下定義:
- def error(message:String): Nothing = throw new RuntimeException(message)
error的返回類型是Nothing,告訴用戶方法不是正常返回的(代之以拋出了異常)。因為Nothing是任何其它類型的子類,你可以非常靈活的使用像error這樣的方法。例如:
- def divide(x:Int, y:Int): Int =
- if(y != 0) x / y
- else error("can't divide by zero")
“那么”狀態(tài)分支,x / y,類型為Int,而“否則”(else)分支,調(diào)用了error,類型為Nothing。因為Nothing是Int的子類型,整個狀態(tài)語句的類型是Int,正如需要的那樣。
【相關閱讀】
- Scala的原始類型是如何實現(xiàn)的
- Scala的類層級
- Scala中的Spiral程序:把代碼都螺旋在一起
- Scala中變高變寬的實現(xiàn):heighten和widen
- 學習Scala的定義工廠對象
網(wǎng)站名稱:簡單接觸Scala底層類型
文章分享:http://m.5511xx.com/article/dhcpiii.html


咨詢
建站咨詢
