目录
单分支
双分支
多分支
for 循环控制
循环守卫
循环步长
循环嵌套
循环返回值
While 和 do..While 循环控制
While循环控制
do..While 循环控制
循环中断
if (条件表达式) {执行代码块
}
var age = StdIn.readShort()if (age < 18){println("童年")
}
if (条件表达式) {执行代码块 1
} else {执行代码块 2
}
var age = StdIn.readShort()if (age < 18){println("童年")}else{println("成年")}
if (条件表达式 1) {执行代码块 1
}
else if (条件表达式 2) {执行代码块 2
……
else {执行代码块 n
}
println("input age")
var age = StdIn.readInt()if (age < 18){println("童年")
}else if(age>=18 && age<30){println("中年")
}else{println("老年")
}
Scala 中 if else 表达式其实是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容。
val res :String = if (age < 18){"童年"
}else if(age>=18 && age<30){"中年"
}else{"老年"
}println(res)
for(i <- 1 to 3){print(i + " ")
}
println()
<- 表示java里面的:,1 to 3 表示[1,2,3],前后闭合
for(i <- 1 to 3 if i != 2) { print(i + " ")
}
println()
循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为 true 则进入循环体内部,为false 则跳过,类似于continue。
for (i <- 1 to 10 by 2) {println("i=" + i)
}
//两种写法效果相同,但是第二种能应对更多的情况for (i <- 1 to 2; j <- 1 to 2) {println(" i = " + i + " j = " + j)}for (i <- 1 to 2) {// some codefor (j <- 1 to 2) {println(" i = " + i + " j = " + j)}}
for {i <- 1 to 3 j = 4 - i
} {println("i=" + i + " j=" + j)
}
上面代码等价于
for (i <- 1 to 3) { var j = 4 - iprintln("i=" + i + " j=" + j)
}
将遍历过程中处理的结果返回到一个新 Vector 集合中,使用 yield 关键字。
很少使用 ,了解即可
var res = for (i <- 1 to 10) yield (i + 1)println(res)
循环变量初始化
while (循环条件) {循环体(语句) 循环变量迭代
}
var i = 1while (i < 5) {println(s"while第${i}次输出")i += 1}
循环变量初始化;
do{循环体(语句) 循环变量迭代
} while(循环条件)
var i = 1do {println(s"这是do while第${i}次输出")i += 1} while (i < 5)
Scala 内置控制结构特地去掉了 break 和 continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break 和continue 的功能,而不是一个关键字。Scala 中使用breakable 控制结构来实现 break 和 continue 功能。
import scala.util.control.Breaksobject TestContinue {def main(args: Array[String]): Unit = {Breaks.breakable(for (i <- 1 to 10) {if (i % 2 == 0) {Breaks.break()}println(i)})println("exit")}}