您的位置:首页 > 其它

scala(2) 变长参数 lazy 异常处理 数组Array Map tuple

2016-03-28 22:15 507 查看
可变长参数

声明参数类型后加*

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"
a50d
->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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala