日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(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ù)變量:

 
 
 
  1. scala>val i: Int = null 
  2. < console>:4:error:typemismatch;  
  3. found:Null(null)  
  4. required:Int  

類型Nothing在Scala的類層級的***端;它是任何其它類型的子類型。然而,根本沒有這個類型的任何值。要一個沒有值的類型有什么意思呢?7.4節(jié)中討論過,Nothing的一個用處是它標明了不正常的終止。例如Scala的標準庫中的Predef對象有一個error方法,如下定義:

 
 
 
  1. def error(message:String): Nothing = throw new RuntimeException(message)  

error的返回類型是Nothing,告訴用戶方法不是正常返回的(代之以拋出了異常)。因為Nothing是任何其它類型的子類,你可以非常靈活的使用像error這樣的方法。例如:

 
 
 
  1. def divide(x:Int, y:Int): Int =  
  2.  if(y != 0) x / y  
  3.  else error("can't divide by zero")  

“那么”狀態(tài)分支,x / y,類型為Int,而“否則”(else)分支,調(diào)用了error,類型為Nothing。因為Nothing是Int的子類型,整個狀態(tài)語句的類型是Int,正如需要的那樣。

【相關閱讀】

  1. Scala的原始類型是如何實現(xiàn)的
  2. Scala的類層級
  3. Scala中的Spiral程序:把代碼都螺旋在一起
  4. Scala中變高變寬的實現(xiàn):heighten和widen
  5. 學習Scala的定義工廠對象


網(wǎng)站名稱:簡單接觸Scala底層類型
文章分享:http://m.5511xx.com/article/dhcpiii.html