Scala 速通语法(二)| 流程控制
流程控制
分支控制
Scala 中任意表达式都是有返回值的,也就意味着 if else 表达式其实是有返回结果的,具体返回结果的值取决于满足条件的代码体的最后一行内容
if-else
简单类比Java- 嵌套分支 多层
if-else
嵌套 但最好不要超过 3 层
- for 循环 重点 也称为 for 推导式(for comprehension)或for 表达式(for expression)
// i 表示循环的变量, <- 规定好to 规定 // i 将会从1-3 循环, 前后闭合 for(i <- 1 to 3){ print(i + " ") } // 这种方式和前面的区别在于 i 是从 1 到 3-1 // 前闭合后开的范围,和 java 的 arr.length() 类似 for(i <- 1 until 3) { print(i + " ") } //循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为true 则进入循环体内部,为false则跳过,类似于continue for(i <- 1 to 3 if i != 2) { print(i + " ") } //上面代码等价于 for (i <- 1 to 3) { if (i != 2) { println(i+" ") } }
- 嵌套循环
//没有关键字,所以范围后一定要加;来隔断逻辑
for(i <- 1 to 3; j <- 1 to 3){
println(" i =" + i + " j = " + j)
}
- 循环返回值
val res = for(i <- 1 to 10) yield i
println(res)
- 使用花括号{}代替小括号()
for(i <- 1 to 3; j = i * 2) {
println(" i= " + i + " j= " + j)
}
//可以写成
for{
i <- 1 to 3
j = i * 2} {
println(" i= " + i + " j= " + j)
}
- for 推导式有一个不成文的约定:当 for 推导式仅包含单一表达式时使用圆括号,当其包含多个表达式时使用大括号
- 当使用{} 来换行写表达式时,分号就不用写了
- while 循环控制
- 基本语法
循环变量初始化
while (循环条件) {
循环体(语句)
循环变量迭代
}
- 基本语法
//1. 定义循环变量
var i = 0
//2. i < 10 条件
while (i < 10){
println("hello" + i) //循环体
//循环变量迭代
i += 1
}
//与 If 语句不同,While 语句本身没有值,即整个 While 语句的结果是 Unit 类型的()
- 因为 while 中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量 ,而变量需要声明在 while 循环的外部,那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而是推荐使用 for 循环
- do - while 循环
//do{
//循环体(语句)
//循环变量迭代
//} while(循环条件)
var i = 0 // for
do {
printf(i + "hello\n" )
i += 1
} while (i < 10)
}