第4章 流程控制
-
if else常规用法
单分支,双分支,多分支
-
带返回值
-
scala实现java三元运算符
-
for循环控制
基本语法
for ( 循环变量 <- 数据集 ) {
循环体
}
package chapter04 import scala.language.postfixOps object Test02_ForLoop { def main(args: Array[String]): Unit = { // 1. 遍历范围,闭区间 for (i <- 0 to 9) { println(i + ". Hello World") } for (i <- 0.to(9)) { println(i + ". Hello World") } // 2. 遍历范围,不包含终点 for (i <- Range(0, 10)) { println(i) } for (i <- 0 until 10) { println(i + ". Hello World") } // 3. 集合遍历 val a = Array(11, 22, 33) for (ele <- a) { println(ele) } for (i <- a.indices) { println(a(i)) } for (i <- Array(11, 22, 33)) { println(i) } for (i <- List(11, 22, 33)) { println(i) } for (i <- Set(11, 22, 33)) { println(i) } // 4. 循环守卫,跳过i=5 for (i <- 0 to 10 if i != 5) { println(i) } println("=============循环步长=============") // 5. 循环步长 for (i <- 1 to 10 by 2) { println(i) } for (i <- 1 to 10 reverse) { println(i) } for (i <- 1.0 to 10.0 by 0.5) { println(i) } for (i <- Range(0, 10, 3)) { println(i) } } }
-
嵌套循环
-
循环引入变量
-
for循环返回值
// 6. 循环返回值 val result: immutable.IndexedSeq[Int] = for (i <- 0 to 10) yield { i * 2 } println(result)
-
while 循环
变量和返回值必须在while外部定义,因此scala中不推荐使用while
package chapter04 object Test02_WhileLoop { def main(args: Array[String]): Unit = { // while,必须在外部定义变量 var a = 10 while (a > 0) { println("this is a while loop: " + a) a -= 1 } } }
-
scala循环中断
continue:循环守卫
break:抛出异常
/2
-
java
-
scala
package chapter04 import scala.util.control.Breaks object Test06_Break { def main(args: Array[String]): Unit = { //1. 采用抛出异常,退出循环的方式 try { for (i <- 0 to 4) { if (i == 3) throw new RuntimeException println(i) } } catch { case e: Exception => //什么都不做,只是退出循环 } finally { println("这是finally的代码") } // 2. 为了简化,使用scala中的Breaks类的break方法,实现异常的抛出和捕捉 Breaks.breakable( for (i <- 0 to 4) { if (i == 3) Breaks.break() println(i) } ) // 3. 如果还是嫌弃复杂的话,还可以直接import scala.util.control.Breaks._ import scala.util.control.Breaks._ breakable( for (i <- 0 to 4) { if (i == 3) break() println(i) } ) println("这是循环外的代码") } }
-