自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

簡(jiǎn)單接觸Scala底層類型

開發(fā) 后端
本文節(jié)選自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻譯的《Programming in Scala》的第十一章。Scala是一種針對(duì) JVM 將函數(shù)和面向?qū)ο蠹夹g(shù)組合在一起的編程語言。

圖釋11.1類型層級(jí)的底部你看到了兩個(gè)類scala.Null和Scala.Nothing。它們是用統(tǒng)一的方式處理某些Scala的面向?qū)ο箢愋拖到y(tǒng)的“邊界情況”的特殊類型。

51CTO編輯推薦:Scala編程語言專題

類Null是null類型的引用;它是每個(gè)引用類(就是說,每個(gè)繼承自AnyRef的類)的子類。Null不兼容值類型。你不可,比方說,把null值賦給整數(shù)變量:

  1. scala>val i: Int = null 
  2. < console>:4:error:typemismatch;  
  3. found:Null(null)  
  4. required:Int  
類型Nothing在Scala的類層級(jí)的***端;它是任何其它類型的子類型。然而,根本沒有這個(gè)類型的任何值。要一個(gè)沒有值的類型有什么意思呢?7.4節(jié)中討論過,Nothing的一個(gè)用處是它標(biāo)明了不正常的終止。例如Scala的標(biāo)準(zhǔn)庫中的Predef對(duì)象有一個(gè)error方法,如下定義:

  1. def error(message:String): Nothing = throw new RuntimeException(message)  
error的返回類型是Nothing,告訴用戶方法不是正常返回的(代之以拋出了異常)。因?yàn)镹othing是任何其它類型的子類,你可以非常靈活的使用像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。因?yàn)镹othing是Int的子類型,整個(gè)狀態(tài)語句的類型是Int,正如需要的那樣。

【相關(guān)閱讀】

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

責(zé)任編輯:book05 來源: Artima
相關(guān)推薦

2009-11-17 11:14:25

Oracle擴(kuò)展

2010-01-15 09:15:09

Scala Actor并發(fā)

2009-12-11 10:45:00

Scala講座類型系統(tǒng)功能

2009-07-22 09:43:30

Scala類型

2009-06-10 09:29:40

Scala類型通配符

2009-07-21 09:31:00

Scala基本類型文本

2009-06-03 09:08:20

ScalaJava類型

2010-08-09 15:44:44

DB2 數(shù)據(jù)類型

2009-11-27 14:18:37

Scala

2009-07-09 00:25:00

Scala參數(shù)化

2009-12-11 10:43:00

Scala講座混入多重繼承類型層次

2009-11-19 10:43:54

Oracle Clob

2009-09-11 10:16:07

Linq匿名類型

2009-09-17 11:35:40

Linq匿名類型

2009-07-08 12:43:59

Scala ServlScala語言

2010-01-18 14:20:15

交換機(jī)接口類型

2009-08-27 10:19:22

C#匿名類型

2009-09-03 16:55:58

C#引用類型

2009-09-01 18:05:17

C#類型聲明

2009-08-03 17:51:43

C#引用類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)