大家都知道,scala语言和kava语言有很多相似之处,那么循环呢?不用说,肯定也有很多相似的地方,但也有不同的地方,今天就给大家归纳总结下scala中的几种循环使用语法。
和java中的while循环一样,如果给的循环条件为true,会重复执行循环内的语句,直到条件变为false,语法也是一样的
语法:
while(循环条件){
循环代码块
}
举例:
var num = 0
while (num < 10) {
println(num)
num = num + 1
}
和java中的do…while循环一样,循环体先执行一次再去进行循环判断,如果给的循环条件为true,会重复执行循环内的语句,直到while括号内的条件变为false,语法也是一样的
语法:
do{
循环代码块
}while(循环条件)
举例:
var num = 0
do {
println(num)
num += 2
} while (num < 20)
for循环允许编写一个执行指定次数的循环控制结构。和java一样都是用来表示循环,但是语法却有些差别
语法:
for(i <- 1 to n){
循环代码块
}
举例:
for (k <- 1 to 10){
println(k)
}
解析:
以上语法中,n一般是一个可以迭代的对象,如Array或String,也可以是一个数字区间,如 i to j(从 i 至 j 的所有整数,包含 i 和 j),或者 i until j(从 i 至 j 除了 j 的所有整数,不包含j)。
其中,左箭头 <- 用于为变量 x 赋值。
在 for 循环中你可以使用分号(;)来设置多个区间,它将迭代给定区间所有的可能值,其效果类似于java中的多重循环嵌套:
语法:
for(i <- 1 to n ; j <- 1 to n){
循环代码块
}
举例:
for (i <- 1 to 10 ; j <- 1 to 10){
println(i + j)
}
可以使用一个或多个 if 语句来过滤一些元素,不同的条件使用分号 ; 隔开,并列条件都满足才执行循环代码块的语句
语法:
for (k <- 1 to 10 if 判断条件1 ; if 判断条件2 ; ...){
循环代码块
}
举例:
val num = 10
for(i <- 1 to num ; if i%2==0 ; if i>5 ) {
println(i * 10)
}
使用yield可以将for循环的返回值作为一个变量存储到一个集合中,最后统一返回。
举例:
scala> for (i <- 1 to 3) yield i * 10
res1: scala.collection.immutable.IndexedSeq[Int] = Vector(10, 20, 30)
for循环里面使用by后表示步长,每循环一次加一次步长,直到判断条件不满足为止
举例:
for (k <- 1 to 10 by 2){
println(k)
}
// 1 3 5 7 9
当满足判断条件想要跳出循环使当前整个循环结束时,在java中使用break就可以做到,但是在scala中没有这个语句,必须先定义才能使用,breakable在for 循环外面表示,然后可以使用 break()来跳出循环
语法:
breakable{
for(i<- 0 to n) {
循环代码块
if(i==n1){
break()
}
}
}
举例:
breakable{
for(i<- 0 to 10) {
if(i==5){
break()
}
println(i)
}
}
//0 1 2 3 4
当在循环中使用 break 语句,在执行到该语句时,就会中断循环并执行循环体之外的代码块。在scala中是没有break语句的,所以首先要导一个包,import scala.util.control.Breaks._
举例:
val num = 10
for(i <- 1 to num){
println( i )
for(b <- 1 to num by 3) {
if(b>=5){
break
}
println(b * 10)
}//中断嵌套循环
}
//1 10 40
当在循环中使用 break 语句,当满足判断条件,在执行到该语句时,就会中断当前循环并重新开始执行下一次循环,和java中continue类似,breakable在for循环里面表示 ,然后可以使用 break来跳出当前循环
语法:
val num = 10
for(i<- 0 to num) {
breakable{
if(i==n){
break
}
循环代码块
}
}
举例:
for(i<-0 until 10){
breakable{
if(i==3||i==6) {
break
}
println(i)
}
}
// 0 1 2 4 5 7 8 9