四、循环
for表达式:for(i <- 表达式/集合/数组){ 表达式}
scala> val num = 1.to(5)
num: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)
scala> for (i <- num){println(i)}
1
2
3
4
5
scala> for(i <- 1.to(6)){println(i)}
1
2
3
4
5
6
scala> for(i <- 2.to(7)) println(i)
2
3
4
5
6
7
嵌套循环
scala> for (i <- 1 to 3 ; j <- 1 to 5){print("*"); if(j == 5) println("")}
*****
*****
*****
守卫:for表达式中添加的if 判断称之为守卫
for(i <- 表达式/集合/数组 if 表达式){ 表达式}
scala> for (i <- 1 to 10 if(i%2 ==0)) println(i)
2
4
6
8
10
scala> for (i <- 1 to 10 if i % 2 ==0) println(i)
2
4
6
8
10
for推导式:for循环体中使用yield表达式构建一个集合,把使用yield的for表达式称之为推导式
scala> val num =for(i <- 1 to 5) yield i*10
num: scala.collection.immutable.IndexedSeq[Int] = Vector(10, 20, 30, 40, 50)
scala> print(num)
Vector(10, 20, 30, 40, 50)
while循环:
scala> var i =1
i: Int = 1
scala> while(i<=10){
| print(i)
| i = i+1
| }
12345678910
scala>
五、break和continue
在scala中break和continue关键字移除了,如果一定要使用,需要使用scala.util.control包的break类的breable和break方法
实现break
scala> import scala.util.control.Breaks._
import scala.util.control.Breaks._
scala> breakable{for (i <- 1 to 10){if(i>=5) break() else println(i)}}
1
2
3
4
实现continue:breakable{} 把for表达式的循环体包起来
scala> for( i <- 1 to 10) {breakable{if(i % 2 ==0) break() else println(i)}}
1
3
5
7
9