scala流程控制
主要有三大流程控制语句
- 顺序控制
- 分支控制
- 循环控制
顺序控制
顺序控制就是按照代码所写顺序从上到下依次执行,这个和java是一样的
分支控制
分支控制与java也大致相同,使用if…else if…else来执行
1 | val age = 19 |
有时候有些if语句没有输出值,但是在scala中,每个表达式都应该有某种值。这个可以使用Unit类,写做()。
1 | if(x > 0) 1 else () |
这个()可以作为表示无有用值的占位符
循环控制
for循环
scala中的for循环与java中的for循环写法还是差距很大的
范围数据循环方式
使用to,左闭右闭,包含start和end
1 | // 可以使用 变量 <- 表达式的形式 提供多个生成器,多个使用分号隔开 |
使用until,左闭右开,包含start不包含end
1 | for (i <- 1 until 3) { |
也可以对集合进行遍历
1 | var myArray:Array[Int] = Array(1,3,5,7,9) |
for循环中的循环守卫
在遍历的同时增加判断条件,如果判断条件为true,则进入循环,否则,跳过此次循环,进行下一次循环,相当于continue
1 | // 每个生成器都可以带一个守卫,以if开头的boolean表达式 |
for循环中引入变量
可以在遍历元素的同时,对元素进行其他操作
1 | // 注意两个操作之间有; 不然编译器不知道逻辑 |
while循环
while循环与java的用法相似,不过scala不推荐使用while循环,而推荐使用for循环(由于scala不推荐使用外部变量)
1 | var i = 0 |
do…while循环
do…while循环与java用法也相似,先执行再判断
1 | var i = 0; |
循环的中断
scala中取消了关键字break和continue,而采用了函数的方式来实现了循环的中断来代替break和continue
break()函数
1 | // 使用break()需要引入 |
可以看到break()中就是抛出一个异常,而由于异常没有处理,所以导致执行中断了,这个操作不只是中断了循环,直接将程序中断了
可以使用breakable()来捕获该异常,这样后续程序就可以执行了
1 | // def breakable(op: => Unit): Unit = |