Scala教程
Scala面向对象
Scala高级

Scala for

Scala for循环

在 Scala 中, for 循环 被称为 for 推导式。它可用于迭代、过滤和返回迭代集合。 for-comprehension 看起来有点像命令式语言中的 for 循环,只不过它构造了一个所有迭代结果的列表。
语法
for( i <-range){
    // statements to be executed
}
在上面的语法中,范围是一个具有 开始结束点的值。您可以使用 to 或 until 关键字传递范围。

使用 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 代替 tountilto 之间的主要区别在于, to 包括范围内给定的开始和结束值,而 until排除范围的最后一个值。因此,下面的示例将仅打印 1 到 9、

使用 until 关键字的 Scala for-loop 示例

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、 直到不超过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

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

在上面的示例中,我们使用了 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 每个循环或 for-comprehension 来迭代列表、序列等集合。
来看一个例子。

迭代集合的Scala for-loop例子

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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4