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

版權申明:轉載請注明出處。
文章來源:http://bigdataer.net/?p=253

排版亂?請移步原文獲得更好的閱讀體驗

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表達式沒有分支滿足條件,則返回Unit

2.2塊表達式

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

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)

2.4函數

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

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)這種寫法是錯誤的。
#### 2.6懶值
當val被生命為lazy時,它的初始化會被推遲,直到其被第一次取值時。如:
`val a = 0
lazy val b = a*10`
#### 2.7異常處理
scala中異常處理與java類似。一般寫法如下:
```scala 
try{
process
}catch{
case e:Throwable => some process
case _ => other process
}finally{
}```
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容