幾個scala的類型:Option Some None,Any AnyRef AnyVal Null,Noting,Nil

頂級類:Anyhtml

 

Any的子類:AnyRef、AnyValjava

 

AnyRef的子類:Nullapi

 

 

AnyVal的子類:java的值類型Byte  | Short Int Long | Float Double | Char String  | Boolean | Unitscala

 

Null能夠賦值給全部的引用類型(AnyRef),不能賦值給值類型,這個java的語義是相同的,null是是是Null的惟一對象。htm

Unit:AnyVal的子類,無值,和其餘語言的void相似,用於無返回值對象

 

Any AnyRef(Null null Nothing) AnyVal(Unit)繼承

抽象 非抽象 抽象   抽象 抽象get

 

 

Optionit

Option抽象類,繼承兩個特徵extends Product with Serializableio

Option的子類:Some、 None:Option[Nothing]

 

scala推薦在可能返回空的方法使用Option[X]做爲返回類型。若是有值就返回Some[x](Some也是Option的子類),不然返回None

 

  1. def get(key: A): Option[B] = {  
  2.     if (contains(key))  
  3.         Some(getValue(key))  
  4.     else  
  5.         None  
  6. }  

 

得到Option後,能夠使用get得到包含的值,或者使用getOrElse得到默認值若是isEmpty爲true。

 

 

Noting:

Nothing是全部Any的抽象子類,也是Null的子類。Nothing沒有對象,可是能夠用來定義類型。例如,若是一個方法拋出異常,則異常的返回值類型就是Nothing(雖然不會返回) 

 

  1. def get(index:Int):Int = {  
  2.     if(x < 0) throw new Exception(...)  
  3.     else ....  
  4. }  

 

if語句是表達式,有返回值,必然有返回值類型,若是x < 0,拋出異常,返回值的類型爲Nothing,Nothing也是Int的子類,因此,if表達式的返回類型爲Int,get方法的返回值類型也爲Int。 

 

Nil:

 

Nil是一個空的List,定義爲List[Nothing],根據List的定義List[+A],全部Nil是全部List[T]的子類。

 

 

Noting用法:

Nil:List[Nothing]

None:Option[Nothing]

throw new Exception(...)  爲Nothing

相關文章
相關標籤/搜索