分支控制 if - else
- 让程序有选择的执行,分支控制有三种:单分支,双分支,多分支
- 注意事项:
- 如果大括号{}内的逻辑代码只有一行,大括号可以省略, 这点和java 的规定一样。
- Scala中任意表达式都是有返回值的,也就意味着if else表达式其实是有返回结果的,具体返回结果的值取决于满足条件的代码体的最后一行内容。
- Scala中是没有三元运算符,因为 Scala 的if-else 是有返回值的,因此,本身这个语言也不需要三元运算符了,并且可以写在同一行,类似 三元运算
* val res2 = if(age >= 18) "成年" else "未成年"
单分支
if (条件表达式){
执行代码
}
双分支
if (条件表达式){
执行代码
}else{
执行代码
}
多分支
if (条件表达式){
执行代码
}else{
执行代码
}
嵌套分支
if (条件表达式){
if (条件表达式){
执行代码
}
}else{
执行代码
}
For循环
- Scala也为for循环这一常见的控制结构提供了非常多的特性,这些for循环的特性被称为for推到或for表达式
- 范围数据循环(to):i 将会从 1- 3 ,前后闭合
for(i <- 1 to 3){
print(i + " ")
}
println()
- 范围数据循环(Until):i 是从 1 到 3-1
for(i <- 1 until 3) {
print(i + " ")
}
println()
- 循环守卫
for(i <- 1 to 3 if i != 2) {
print(i + " ")
}
println()
等价于
for (i <- 1 to 3){
if (i != 2) {
print(i + " ")
}
}
- 循环步长
for (i <- 1 to 10 by 2) {
println("i=" + i)
}
- 嵌套循环
for(i <- 1 to 3; j <- 1 to 3) {
println(" i =" + i + " j = " + j)
}
等价于
for (i <- 1 to 3) {
for (j <- 1 to 3) {
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 - i
println("i=" + i + " j=" + j)
}
- 倒序打印
for(i <- 1 to 10 reverse){
println(i)
}
While循环控制
while (循环条件) {
循环体(语句)
循环变量迭代
}
- 说明:
- 循环条件是返回一个布尔值的表达式
- while 循环是先判断再执行语句
- 与 for 语句不同,while 语句没有返回值,即整个 while 语句的结果是 Unit 类型()
- 因为 while 中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量,而变量需要声明在 while 循环的外部,那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而是推荐使用 for 循环。
循环中断
- Scala 内置控制结构特地去掉了 break 和 continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。Scala中使用breakable控制结构来实现 break 和 continue 功能。
import scala.util.control.Breaks
def main(args: Array[String]): Unit = {
Breaks.breakable(
for (elem <- 1 to 10) {
println(elem)
if (elem == 5) Breaks.break()
}
)
println("正常结束循环")
}