Scala 循环

  • 循环

    您可能会遇到需要多次执行一段代码的情况。通常,语句是按顺序执行的:函数中的第一个语句首先执行,然后第二个执行,依此类推。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句使我们可以多次执行一个语句或一组语句。下面给出的是大多数编程语言中循环语句的一般形式-
    loop_architecture
    Scala语言提供了以下类型的循环来处理循环需求。
    循环类型 描述
    while循环 在给定条件为真时重复一个语句或一组语句。它在执行循环体之前测试条件。
    for循环 多次执行一系列语句,并简化管理循环变量的代码。
    do... while循环 它更像while语句,除了它在循环主体的末尾测试条件(do...while循环至少会执行一次)。
    嵌套循环 您可以在任何其他while,for或do..while循环内使用一个或多个循环。
  • while循环

    语法
    
    while(condition){
       statement(s);
    }
    
    流程图
    c loop
    这里,要注意的关键是,while循环可能根本不执行。当测试条件第一次并且结果为false时,将跳过循环主体,并执行while循环之后的第一条语句。
    范例
    
    object Demo {
       def main(args: Array[String]):Unit = {
          // Local variable declaration:
          var a = 10;
    
          // while loop execution
          while( a < 20 ){
             println( "Value of a: " + a );
             a = a + 1;
          }
       }
    }
    
    尝试一下
  • for循环

    语法
    
    for( var x <- Range ){
       statement(s);
    }
    
    在这里,Range可以是一个数字Range,它表示为i到j或有时像i直到j。左箭头←运算符称为generator,之所以这样命名,是因为它正在生成Range内的各个值。尝试使用以下示例程序来了解Scala编程语言中的循环控制语句(for语句)。
    范例
    
    object Demo {
       def main(args: Array[String]):Unit = {
          var a = 0;
          
          // for loop execution with a range
          for( a <- 1 to 10){
             println( "Value of a: " + a );
          }
       }
    }
    
    尝试一下
  • do...while循环

    与for和while循环不同,for和while循环在循环的顶部测试循环条件,而C语言中的do ... while循环在循环的底部检查其条件。do...while循环类似于while循环,但事实上,它是保证执行至少一次。
    语法
    
    do {
       statement(s);
    } 
    while( condition );
    
    请注意,条件表达式出现在循环的末尾,因此循环中的语句在测试条件之前执行一次。如果条件为真,则控制流跳回去do,并且循环中的语句再次执行。重复此过程,直到给定条件变为假。
    流程图
    c loop
    范例
    
    object Demo {
       def main(args: Array[String]):Unit = {
          // Local variable declaration:
          var a = 10;
    
          // do loop execution
          do {
             println( "Value of a: " + a );
             a = a + 1;
          }
          while( a < 20 )
       }
    }
    
    尝试一下
  • 循环控制语句

    循环控制语句从其正常顺序更改执行。当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。C支持以下控制语句。
    控制声明 描述
    break声明 终止循环或switch语句,并在循环或switch后立即将执行的语句。
  • break声明

    因此,Scala中没有内置的break语句,但是如果你运行的是Scala 2.8+版本,那么就可以使用break语句。当在循环中遇到break语句时,循环立即终止,程序控制在循环之后的下一个语句处恢复。
    语法
    
    // 导入包
    import scala.util.control._
    
    // 创建一个break对象,如下所示
    val loop = new Breaks;
    
    // 保持循环内部的可breakable,如下所示
    loop.breakable {
       // 这里开始循环
       for(...){
          ....
          
          // Break will go here
          loop.break;
       }
    }
    
    流程图
    c loop
    范例
    
    import scala.util.control._
    
    object Demo {
       def main(args: Array[String]):Unit = {
          var a = 0;
          val numList = List(1,2,3,4,5,6,7,8,9,10);
    
          val loop = new Breaks;
          
          loop.breakable {
             for( a <- numList){
                println( "Value of a: " + a );
                
                if( a == 4 ){
                   loop.break;
                }
             }
          }
          println( "After the loop" );
       }
    }
    
    尝试一下
  • 无限循环

    如果条件永远不会为假,则循环将变成无限循环。如果您使用的是Scala,则while循环是实现无限循环的最佳方法。以下程序实现了无限循环。
    
    object Demo {
       def main(args: Array[String]):Unit = {
          var a = 10;
          
          // An infinite loop.
          while( true ){
             println( "Value of a: " + a );
          }
       }
    }
    
    如果执行上述代码,它将进入无限循环,您可以通过按Ctrl + C键终止。
    
    Value of a: 10
    Value of a: 10
    Value of a: 10
    Value of a: 10
    …………….