主要有三大流程控制语句
顺序控制就是按照代码所写顺序从上到下依次执行,这个和java是一样得
分支控制分支控制与java也大致相同,使用if…else if…else来执行
val age = 19if(age > 22){ println("这么大岁数了,什么时候结婚生孩子呀")} else if(age > 18) { println("有对象了么")} else if(age > 16) { println("好好学习,可不能早恋耽误学习")} else { println("你还小")}循环控制for循环
scala中得for循环与java中得for循环写法还是差距很大得
范围数据循环方式
使用to,左闭右闭,包含start和end
// i表示循环得变量// <- 将数值赋给i// 1 to 3 从1-3循环,to关键字,从start到end,这个是前后闭合得for (i <- 1 to 3) { //1 2 3 print(i + "\t")}
使用until,左闭右开,包含start不包含end
for (i <- 1 until 3) { //1 2 print(i + "\t")}
也可以对集合进行遍历
var myArray:Array[Int] = Array(1,3,5,7,9)for(item <- myArray){ print(item+"\t")}
for循环中得循环守卫
在遍历得同时增加判断条件,如果判断条件为true,则进入循环,否则,跳过此次循环,进行下一次循环,相当于continue
// 只有i不等于2得时候才会执行for (i <- 1 to 3 if i != 2) { // 1 3 print(i+"\t")}// 上面得操作等价于for (i <- 1 to 3) { if (i != 2){ // 1 3 print(i+"\t") }}
for循环中引入变量
可以在遍历元素得同时,对元素进行其他操作
// 注意两个操作之间有; 不然编译器不知道逻辑for (i <- 1 to 3; j = i + 4) { // 5 6 7 print(j + "\t")}while循环
while循环与java得用法相似,不过scala不推荐使用while循环,而推荐使用for循环(由于scala不推荐使用外部变量)
var i = 0while (i < 10) { println("line" + i) i += 1}do…while循环
do…while循环与java用法也相似,先执行再判断
var i = 0;do { println("line" + i) i += 1} while (i < 10)循环得中断
scala中取消了关键字break和continue,而采用了函数得方式来实现了循环得中断来代替break和continue
break()函数
// 使用break()需要引入import scala.util.control.Breaks._for(i<- 1 to 10){ if(i % 5 == 0){ // def break(): Nothing = throw breakException break() } print("i="+i+"\t")}// i=1 i=2 i=3 i=4 Exception in thread "main" scala.util.control.BreakControl
可以看到break()中就是抛出一个异常,而由于异常没有处理,所以导致执行中断了,但是这个操作不只是中断了循环,直接将程序中断了
可以使用breakable()来捕获该异常,这样后续程序就可以执行了
// def breakable(op: => Unit): Unit =// try op catch { case ex: BreakControl if ex eq breakException => }// breakable是专门来捕获breakException异常得,并且捕获之后什么都不做breakable( for(i<- 1 to 10){ if(i % 5 == 0){ // def break(): Nothing = throw breakException break() } print("i="+i+"\t") })






