scala中的循环

1.while

跟Java一样

eg;

var i = 1

while(i<10){

  print("i is :"+i)

  i+=1 //ps:不支持 i++

}

 

2.do ....while

跟Java一样,先执行一次 循环体

var i =0
do{

  print("i is :" +i)
  i+=1

}while(i < 10)

 

3.for 

3.1基础语法:


for( var x <- Range by offset ){
   statement(s);
}

Range 可以是一个数字区间表示 i to j ,或者 i until j。左箭头 <- 用于为变量 x 赋值。  by 可以指定步长,即每次 增加几  默认缺省值 为1

或者 range(1,100,2)

PS: to 是左右都闭区间,   range 是左闭右开 区间,即不包含最后一位

 

eg1:

for(i <- 1 to 10){

  println("i is :"+i)

}

输出结果:  ps:  包含1 和 10 ,即:左右都闭区间

eg2:

for(i <- 1 to 10 by 3){
  println(i)
}

 

输出:

eg3:

for(i <- range(1,10,2) ){
  println(i)
}

输出:

3.2 遍历列表

val listA = List(1,2,3,4,5);
    for(m <- listA){
print("elements is :"+m)
    }

 

3.3 守卫表达式,即 for 加 if 判断,满足if 判断后执行代码块

val listA = List(1,2,3,4,5);
    for(m <- listA
        if m < 4; if m != 2){
print("elements is :"+m)
    }

 

3.4 for循环推导式, 即 for循环之 yield 

for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。Scala 中 for 循环是有返回值的。如果被循环的是 Map,返回的就是  Map,被循环的是 List,返回的就是 List,以此类推。

var testVar = for {i <- 1 to 10
                   if i % 3 == 0
                   } yield i
for(i <- testVar){
  println(i)
}

 

输出结果:

 

eg2:

var testVar = for {i <- 1 to 10
                   if i % 3 == 0
                   } yield {print(i)
  i }
println(testVar)

输出:

 

 

3.5 多生成器for循环

多个生成器 之间用 ;  分号隔开

eg:

for( i <- range(1,9); j <- range(1,9)){
  println(i," * ",j,"=",i*j)
}

输出:

 

3.6 break continue

 

需要导入包:    import scala.util.control.Breaks

break 终止当前循环;

eg:

val arr = Array(1, 2, 49, 4, 88, 10)
breakable{
  for(i <- arr){
    if(i>5) break
    println(i)
  }
}

输出:

 

 

类似Java中 continue 的实现:

 

eg:

val arr = Array(1, 2, 66, 4, 88, 10)
for(i <- arr){
  breakable{
    if(i >50){
      break
    }
    println(i)
  }
}

 

输出:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值