Scala很多流程控制语句和Java类似
参考:https://blog.csdn.net/qq_43437122/article/details/107455659
可是for循环却截然不同,下面详细介绍for循环控制语句的语法:
1. to关键字
- 基本案例
for(i <- 1 to 3){
print(i + " ")
}
- 说明
- i 表示循环的变量, <- 规定好 to 规定
- i 将会从 1-3 循环, 前后闭合
- 运行结果
2. until关键字
- 基本案例
for(i <- 1 until 3) {
print(i + " ")
}
-
说明:
-
这种方式和前面的区别在于 i 是从1 到 3-1
-
前闭合后开的范围,和java的arr.length() 类似 for (int i = 0; i < arr.lenght; i++){}
-
运行结果
3. 循环守卫
- 基本案例
for(i <- 1 to 3 if i != 2) {
print(i + " ")
}
- 基本案例说明
- 循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为true则进入循环体内部,为false则跳过,类似于continue
- 上面的代码等价
for (i <- 1 to 3) {
if (i != 2) {
println(i+"")
}
}
- 运行结果
4. 引入变量
- 基本案例
for(i <- 1 to 3; j = 4 - i) {
print(j + " ")
}
- 对基本案例说明
- 没有关键字,所以范围后一定要加;来隔断逻辑
- 上面的代码等价
for ( i <- 1 to 3) {
val j = 4 –i
print(j+"")
}
- 运行结果
5. 嵌套循环
- 基本案例
for(i <- 1 to 3; j <- 1 to 3) {
println(" i =" + i + " j = " + j)
}
- 对基本案例说明
- 没有关键字,所以范围后一定要加;来隔断逻辑
- 上面的代码等价
for ( i <- 1 to 3) {
for ( j <- 1to 3){
println(i + " " + j + " ")
}
}
- 运行结果
6. 循环返回值
- 基本案例
val res = for(i <- 1 to 10) yield i
println(res)
-
对基本案例说明
-
将遍历过程中处理的结果返回到一个新Vector集合中,使用yield关键字
-
运行结果
7. 使用花括号{}代替小括号()
- 基本案例
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 推导式有一个不成文的约定:当for 推导式仅包含单一表达式时使用圆括号,当其包含多个表达式时使用大括号
- 当使用{} 来换行写表达式时,分号就不用写了
8. 步长控制
步长控制在日常用的比较多,下面提供两种控制步长的方法:
- 使用Range()
for (i <- Range(1, 10, 2)) {
print(i + " ")
}
- 结果如图:
- 使用for循环守卫
for(i <- 1 to 10 if i % 2 == 1){
print(i + " ")
}
- 结果如图