2.scala控制結構、函數、異常處理

2.scala控制結構、函數、異常處理

2.1條件表達式

(1)if表達式有返回值,如val result = if(x>0) 0 else -1 ,則result值可能爲0或-1
(2)if表達式分支語句返回值的類型不一致時,則表達式返回值的類型是它們共同的父類型Any
val result = if(x>0) 0 else "error"
則result的類型爲Any
(3)若if表達式沒有分支知足條件,則返回Unitphp

2.2塊表達式

(1)塊表達式的值是最後一個語句的返回值,一個塊中有多個語句時用逗號隔開。如:
val result = {val x=2;val y=3;pow(x,y)}css

2.3循環

(1)while循環的實現方式和java中同樣。
(2)scala中的for循環寫法以下:
for(i <- 1 to 10){ println(i) }
(3)for推導式。若是for循環的循環體以yield開始,則該循環會構造出一個集合,每次迭代生成集合中的一個值,如:
for(i <- 1 to 10) yield i%3 //獲得Vector(1,2,0,1,2,0,1,2,0,1)html

2.4函數

一個函數包含了函數名稱,參數和函數體等三個元素,如:
def abs(x:Double) = if(x>=0) x else -x
若是不是遞歸函數,不須要給定返回值類型java

2.5參數

(1)默認參數。調用某些函數時能夠不用給出參數,此時使用默認參數。如:
def check(path:String,name:String="home")
使用check("local")時傳入的兩個參數分別爲local和默認的home
(2)帶名參數。在提供參數值的時候指定參數名,帶名參數能夠打亂參數列表的順序,可是帶名參數和不帶名參數共同使用時,須要將不帶名參數放在帶名參數以前。
(3)變長參數。參數列表能夠爲同類型的多個參數。如:
def sum(num:Int*)={ val count = 0 for(i <-num){ count +=i } }
函數獲得的是一個序列,可是不表明能夠傳入一個序列。如sum(1 to 5)這種寫法是錯誤的。nginx

2.6懶值

當val被生命爲lazy時,它的初始化會被推遲,直到其被第一次取值時。如:
val a = 0 lazy val b = a*10git

2.7異常處理

scala中異常處理與java相似。通常寫法以下:
try{ process }catch{ case e:Throwable => some process case _ => other process }finally{ }github

相關文章
相關標籤/搜索