📜  Scala for Loop

📅  最后修改于: 2021-01-09 11:36:44             🧑  作者: Mango

Scala for循环

在scala中, for循环称为for-comprehensions。它可用于迭代,过滤和返回迭代的集合。在命令式语言中,for理解有点像for循环,只是它构造了所有迭代结果的列表。

句法

for( i <- range){
    // statements to be executed
}

在以上语法中,range是一个具有起点终点的值。您可以使用to直到关键字来传递范围。

使用to关键字的Scala for循环示例

object MainObject {
   def main(args: Array[String]) {
        for( a <- 1 to 10 ){
         println(a);
      }
   }
}

输出:

1
2
3
4
5
6
7
8
9
10

在下面的例子中,直到用来代替直到之间的主要区别在于,包括范围中给定的开始和结束值,而直到排除范围的最后一个值。因此,以下示例将仅打印1到9。

使用直到关键字的Scala for循环示例

object MainObject {
   def main(args: Array[String]) {
        for( a <- 1 until 10 ){
         println(a);
      }
   }
}

输出:

1
2
3
4
5
6
7
8
9

当您迭代字符串或数组时,应用关键字无益,因为数组范围是0到n-1。直到不超过n-1。因此,您的代码不会抱怨上限。

Scala for循环过滤示例

您可以用于过滤数据。在下面的示例中,我们通过传递条件表达式来过滤数据。该程序仅打印给定范围内的偶数值。

object MainObject {
   def main(args: Array[String]) {
        for( a <- 1 to 10 if a%2==0 ){
         println(a);
      }
   }
}

输出:

2
4
6
8
10

使用yield关键字的Scala for循环示例

在上面的示例中,我们使用yield关键字,该关键字在完成循环迭代后返回结果。内部的供使用的缓冲区用于存储迭代结果,在完成所有迭代之后,它将从该缓冲区产生最终结果。它不像命令式循环那样工作。

object MainObject {
   def main(args: Array[String]) {
        var result = for( a <- 1 to 10) yield a
        for(i<-result){
            println(i)
        }
   }
}

输出:

1
2
3
4
5
6
7
8
9
10

集合中的Scala for循环

在scala中,您可以使用for每个循环或for-comprehensions来迭代列表,序列等集合。

让我们来看一个例子。

Scala for循环迭代集合示例

object MainObject {
   def main(args: Array[String]) {
        var list = List(1,2,3,4,5,6,7,8,9)            // Creating a list
        for( i <- list){                            // Iterating the list
            println(i)
        }
        
   }
}

输出:

1
2
3
4
5
6
7
8
9
10

Scala for-each循环迭代收集示例

在下面的代码中,我们使用了for-each循环的三种方法。您可以根据需要实施其中任何一个。

object MainObject {
   def main(args: Array[String]) {
        var list = List(1,2,3,4,5,6,7,8,9)    // Creating a list
        list.foreach{
            println        // Print each element
        }
        list.foreach(print)
        println
        list.foreach((element:Int)=>print(element+" "))        // Explicitly mentioning type of elements
   }
}

输出:

1
2
3
4
5
6
7
8
9
123456789
1 2 3 4 5 6 7 8 9

使用关键字的Scala for循环示例

在上面的示例中,我们使用关键字。 by关键字用于跳过迭代。当您编写如下代码时:2表示此循环将跳过循环的所有偶数次迭代。

object MainObject {
   def main(args: Array[String]) {
        for(i<-1 to 10 by 2){
            println(i)
        }
   }
}

输出:

1
3
5
7
9