目录
循环守卫 类似于Java的 Continue if成立才会执行打印语句
在Scala中 推荐使用For循环 不推荐使用while和do..while循环 因为while和do..while无返回值,所以当用该语句进行计算时,就必须在外部定义一个变量来接受计算结果,这就等于内部对外部变量产生了影响,所以不推荐使用
基础案例
def main(args: Array[String]): Unit = {
println("范围数据循环方式")
var start=1
var end =3
for (i<-start to end){
print(i+" ")
}
}
<- start to end 前后闭合
i 表示循环的变量 <- start to (关键字) end
i 将会从1 - 3 循环 ,前后闭合
对集合进行遍历
def main(args: Array[String]): Unit = {
println("集合遍历")
//对集合进行遍历
var list =List("hello",10,34,"tom")
for (item<-list){
print(item +" ")
}
}
<-start until end 前闭后开
def main(args: Array[String]): Unit = {
println("<-start until end 前闭后开")
//前闭后开 循环
for (i<-start until end ){
print(i+ " ")
}
}
循环守卫 类似于Java的 Continue if成立才会执行打印语句
def main(args: Array[String]): Unit = {
println("循环守卫 类似于Java的 Continue if成立才会执行打印语句")
for (i<-start to end if i!=2){
print(i+" ")
}
}
引入变量
def main(args: Array[String]): Unit = {
println("引入变量 ")
for (i<-start to end ; j=4-i){
print(j+" ")
}
println("没有关键字,所以范围后面需要加入;来隔断逻辑")
//上面的代码等价
for (i<-start to end ){
var j=4-i
print(j+" ")
}
}
嵌套循环(双重For循环)
def main(args: Array[String]): Unit = {
println("嵌套循环(双重For循环) ")
for (i<-start to end ; j<-start until end){
print(j+" ")
if(j==2){
println()
}
}
}
循环返回值 ==yield
def main(args: Array[String]): Unit = {
println("循环返回值 ")
val res=for(i<- 1 to 10) yield i
//1 对 1 to 10 进行遍历
//2 yield i 将每次循环得到i放入到集合Vector中,并返回给res
//3 i 这里是一个代码块 ,这就意味着可以对i进行处理
val res2=for(i<- 1 to 10) yield {
if(i%2==0){
i
}else{
"不是偶数"
}
}
println(res2)
}
如何控制步长
def main(args: Array[String]): Unit = {
println("如何控制步长1 Range 是前闭后开遍历")
val res3=for(i<- Range(1,4,2)){
print(i+" ")
}
println
println("如何控制步长2 for循环守卫 ")
val res4=for(i<- 1 to 4 if i%2==1){
print(i+" ")
}
}