1. 程式人生 > >scala(2) 變長引數 lazy 異常處理 陣列Array Map tuple

scala(2) 變長引數 lazy 異常處理 陣列Array Map tuple

可變長引數
宣告引數型別後加*
def union(s:Int*)={
var sum=0
for (i:Int<-s){
sum+=i
}
sum
}
print(union(1,2,3,4,56,7))

lazy懶載入
只有呼叫時候在會被載入,一般使用在消耗記憶體/CPU的時候使用。

lazy val sum=10
>sum:Int=<lazy>
sum
>res0:Int=10

異常處理
例如:

var n =33
try{if (n/2
==0) n else {throw new RuntimeException("sorry")} }catch {case e:Exception=>print("The exption is :"+e.getMessage)}

陣列Array
Array預設是不可變的,如果需要則用可變的ArrayBuffer。

 val array=new Array[String](3)//建立儲存String型別的長度為3的陣列
  val stringarray=Array("scala","spark")//也可以直接賦值

  import scala.collection.mutable.ArrayBuffer
  var a
=ArrayBuffer[Int]()//建立可變長陣列 a+=1//加入1 a+=2//加入2 a+=(3,4)//加入3,4 a.insert(0,-1)//在0位置之前插入 a.remove(0)//去除0位置 a.remove(0,2)//從零開始去除2個 a.trimEnd(2)//去除末尾兩個 a.min//取最大值 a.max//取最小值 a.sum//取和

Map
Map預設是不可變的,如果需要則用scala.collection.mutable.Map

  val age=Map("rockey"->27,"spark"->5)//建立不可變map
  import scala.
collection.mutable.Map val ages=scala.collection.mutable.Map("rockey"->27,"spark"->5)//建立可變map age.getOrElse("rockey",0)//在取值的時候如果沒有該key值則會報錯,使用getOrElse沒有Key值就會返回0,一般都採取這種用法 ages("Hadoop")=7//可變map的運用 ages+=("a"->2 ,"b"->3) ages-="a" ages.keySet//檢視所有key值 ages.values//檢視所有value值

tuple元組
需要注意的是元組的index是從1開始的,並且不能改變。
例如:
val tuple=(1,2,3,4,55,6,7,89,10)
tuple._1//取值
tuple._2
tuple._8