Scala 也为for 循环这一常见的控制结构提供了非常多的特性,这些for 循环的特性被称为for 推导式(for comprehension)或for 表达式(for expression)
1.范围数据循环方式1
for(i <- 1 to 3){
print(i + " ")
}
i 表示循环的变量, <- 规定好 to 规定
i 将会从 1-3 循环, 前后闭合
2.范围数据循环方式2
for(i <- 1 until 3) {
print(i + " ")
}
这种方式和前面的区别在于 i 是从1 到 2 (3-1)
前闭合后开的范围,和java的arr.length() 类似
for (int i = 0; i < arr.lenght; i++){}
输出10句 “hello,尚硅谷!”
3.循环守卫
for(i <- 1 to 3 if i != 2) {
print(i + " ")
}
println()
循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为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 推导式仅包含单一表达式时使用圆括号,当其包含多个表达式时使用大括号
当使用{} 来换行写表达式时,分号就不用写了