Scala:(2)控制结构

时间:2021-09-27 20:01:55

(1)if else

val s=if(x>0) 1 else -1

(2)循环

while(n>0){
r=r*n
n-=1
}

///for 循环
for(i <- 1 to n) r=r*i

//until
val s="Hello"
var sum=0
for(i <- 0 util s.length) sum+=s(i)//i的最后一个取值是s.length-1

//多个for循环

for(i <- 1 to 3;j<- 1 to 3) print((10*i+j) + “ ”)
//将打印11 12 13 21 22 23 31 32 33


//yield在for循环中的应用
//for循环的循环体以yield开始,该循环会构造出一个集合
for(i <- 1 to 10) yield i %3
//生成Vector(1,2,0,1,2,0,1,2,0,1)

 

 

 

(3)函数

//定义一个函数
def abs(x :Double)= if (x>=0) x else -x

//大括号的函数定义
def abs(x :Double)={ if (x>=0) x else -x }

 

//函数参数

def decorate(str: String , left: String ="[", right: String="]“)={
left + str +right
}

//变长参数
def sum(args: Int*)={
var result=0
for(arg<-args) result+=arg

result
}

//当变长参数函数被调用时传入的是单个参数,那么该参数必须是单个整数,而不是一个整数区间。解决这个问题的办法是告诉编译器你希望这个参数被当作参数序列处理。追加:_*
val s = sum(1 to 5:_*)

 

 

 (4)Unit是一个返回类型,相当于void

def box(s: String): Unit={
....
}

(5)懒值 lazy

//当val被声明为lazy时,它的初始化将被推迟,知道我们首次对它取值

lazy val words=scala.io.Source.fromFile("/usr/share/dict/words").mkString