Scala 循环

33 篇文章 1 订阅
26 篇文章 0 订阅

Scala 循环

1、介绍

我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

编程语言提供了更为复杂执行路径的多种控制结构。

循环语句允许我们多次执行一个语句或语句组。

2、循环类型

Scala 语言提供了以下三种循环类型。

循环类型描述
while 循环运行一系列语句,如果条件为true,会重复运行,直到条件变为false。
do...while 循环类似 while 语句区别在于判断循环条件之前,先执行一次循环的代码块。
for 循环用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。

 3、循环控制语句

循环控制语句改变你代码的执行顺序,通过它你可以实现代码的跳转。Scala 以下几种循环控制语句:

Scala 不支持 break 或 continue 语句,但从 2.8 版本后提供了一种中断循环的方式。

控制语句描述
break 语句中断循环

 4、while 循环

只要给定的条件为 true,Scala 语言中的 while 循环语句会重复执行循环体内的代码块。

语法:

while(condition)
{
   statement(s);
}

statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。

condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。

object Demo {
   def main(args: Array[String]) {
      var x = 20;
      // while 循环执行
      while( x < 30 ){
         println( "x的值: " + x );
         x = x + 1;
      }
   }
}

5、do...while 循环

while 循环在循环头部测试循环条件, Scala 语言中,do...while 循环是在循环的尾部检查它的条件。

do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。

语法:

do {
   statement(x);
} while( condition );
object Demo{
   def main(args: Array[String]) {
      var x = 20;
      // do 循环
      do{
         println( "x的值: " + x );
         x = x + 2;
      }while( x < 30 )
   }
}

6、for循环

for 循环允许您编写一个执行指定次数的循环控制结构。

语法:

for( var a <- Range ){
   statement(a);
}

Range 可以是一个数字区间表示 x to y ,或者 x until y。左箭头 <- 用于为变量 a 赋值。

(1) x to y 语法(包含 y):

object Demo {
   def main(args: Array[String]) {
      var x = 0;
      // for 循环
      for( x <- 1 to 100){
         println( "x的值为: " + x );
      }
   }
}

(2) x until y 语法(不包含 y):

object Demo {
   def main(args: Array[String]) {
      var x = 0;
      // for 循环
      for( x <- 1 until 100){
         println( "x的值为: " + x );
      }
   }
}

(3)在 for 循环 中你可以使用分号 (;) 来设置多个区间,它将迭代给定区间所有的可能值。以下展示两个区间的循环实例:

object Demo {
   def main(args: Array[String]) {
      var x = 0;
      var y = 0;
      // for 循环
      for( x <- 1 to 10; y <- 1 to 10){
         println( "x的值为: " + x );
         println( "y的值为: " + y );
      }
   }
}

(4)for 循环集合

语法:

for( a <- List ){
   statement(a);
}

 List 变量是一个集合,for 循环会迭代所有集合的元素。

object Demo {
   def main(args: Array[String]) {
      var x = 0;
      val myNumList = List(11,12,13,14,15,16);
      // for 循环
      for( x <- myNumList ){
         println( "x的值: " + x );
      }
   }
}

(5)for 循环过滤

Scala 可以使用一个或多个 if 语句来过滤一些元素。

可以使用分号(;)来为表达式添加一个或多个的过滤条件。

for( var a <- List
      if condition1; if condition2...
   )
{
   statement(a);
}
object Demo {
   def main(args: Array[String]) {
      var x = 0;
      val myNumList = List(11,12,13,14,15,16,17,18,19,20);
      // for 循环
      for( x <- myNumList
           if x != 15; if x < 20 ){
         println( "x的值为: " + x );
      }
   }
}

(6)for 使用 yield

将for 循环的返回值作为一个变量存储。

var myRetVal = for{ var a <- List
     if condition1; if condition2...
}yield a

注意大括号中用于保存变量和条件,myRetVal 是变量, 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。

object Demo {
   def main(args: Array[String]) {
      var x = 0;
      val myNumList = List(11,12,13,14,15,16,17,18,19,20);
      // for 循环
      var myRetVal = for{ x <- myNumList
                        if x != 3; if x < 8
                      }yield x
      // 输出返回值
      for( x <- myRetVal){
         println( "x的值为: " + x );
      }
   }
}

7、break 语句

Scala 语言中默认是没有 break 语句,但是你在 Scala 2.8 版本后可以使用另外一种方式来实现 break 语句。当在循环中使用 break 语句,在执行到该语句时,就会中断循环并执行循环体之后的代码块。

格式:

// 导入以下包
import scala.util.control._

// 创建 Breaks 对象
val loop = new Breaks;

// 在 breakable 中循环
loop.breakable{
    // 循环
    for(...){
       ....
       // 循环中断
       loop.break;
   }
}
import scala.util.control._

object Demo {
   def main(args: Array[String]) {
      var x = 0;
      val myNumList = List(11,12,13,14,15,16,17,18,19,20);
	  
      val loop = new Breaks;
      loop.breakable {
         for( x <- myNumList){
            println( "x的值为: " + x );
            if( x == 14 ){
               loop.break;
            }
         }
      }
      println( "loop break" );
   }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值