Scala for循环

Scala for循环

在Scala中, for循环被称为for-comprehension。它可用于迭代、过滤和返回迭代的集合。for-comprehension看起来有点像命令式语言中的for循环,不同的是它构造了所有迭代结果的列表。

语法

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

在上面的语法中,range是一个值,它有起始点和结束点。您可以通过使用to或until关键字传递range。 使用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

在下面的示例中, until被用来代替 to 。在 until 和 to 之间的主要区别是, to 会包含范围内给定的起始和结束值,而 until 会排除范围的最后一个值。因此,下面的示例将打印出1到9。

使用 until关键字的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

在迭代字符串或数组时,使用 until 关键字是很有帮助的,因为数组的范围是从0到n-1。 until 不超过n-1,所以您的代码不会报告上限溢出的错误。

Scala的for循环过滤示例

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

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

产出:

2
4
6
8
10

Scala for-loop示例,使用 yield 关键字

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

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 each循环或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

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

在上面的示例中,我们使用了 by 关键字。 by 关键字用于跳过迭代。当您编写像这样的代码:by 2,意味着此循环将跳过循环的所有偶数迭代。

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

输出:

1
3
5
7
9

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程