Scala 中的 foreach 循环

Mohammad Irfan 2023年1月30日 2022年5月18日
  1. 在 Scala 中使用 foreach 循环
  2. 在 Scala 中使用带有 until 标志的 foreach 循环
  3. 在 Scala 中使用带有 if 条件的 foreach 循环
  4. 在 Scala 中使用 foreach 循环和 yield
  5. 在 Scala 中使用 foreach 循环迭代列表
  6. 使用 Scala 的 foreach() 函数
  7. 在 Scala 中使用带有 Vector 的 foreach 函数
Scala 中的 foreach 循环

foreach 是一个循环,用于迭代对象/容器的元素。本教程将讨论 foreach 循环并学习如何在 Scala 中实现它。

在 Scala 中使用 foreach 循环

Scala 提供了一个 foreach() 函数来遍历列表元素。我们创建了一个 foreach 循环,该循环将数值遍历到此示例中的指定限制。

循环需要两个参数,第一个是循环的开始,第二个是结束。

例子:

object MyClass {
    def main(args: Array[String]) {
        print("for loop iterating...\n")
        for( a <- 1 to 3 ){
         println(a);
        }
    }
}

输出:

for loop iterating...
1
2
3

在 Scala 中使用带有 until 标志的 foreach 循环

我们将创建一个带有 until 标志的 foreach 循环来遍历数值。它在迭代元素但不包括最后一个元素时很有用。

循环需要两个参数,第一个是循环的开始,第二个是 until 关键字。

例子:

object MyClass {
    def main(args: Array[String]) {
        print("for loop iterating...\n")
        for( a <- 1 until 3 ){
         println(a);
        }
    }
}

输出:

for loop iterating...
1
2

在 Scala 中使用带有 if 条件的 foreach 循环

如果要在遍历时过滤数据,可以将 if 条件与循环表达式一起使用。这是 Scala 使用简洁代码获取过滤数据的方法。

在下面的代码片段中,我们只在循环中使用了 if 条件来获取偶数值。

例子:

object MyClass {
    def main(args: Array[String]) {
        print("for loop iterating...\n")
        for( a <- 1 to 10 if a%2==0 ){
            println(a);
        }
    }
}

输出:

for loop iterating...
2
4
6
8
10

在 Scala 中使用 foreach 循环和 yield

如果你想在遍历而不是遍历和显示元素后获取项目集合,请在循环中使用 yield 关键字。

yield 关键字返回相同遍历类型的集合,这意味着 map 返回 map,list 返回一个列表。在这里,我们遍历数值并在循环迭代后得到一个向量。

例子:

object MyClass {
    def main(args: Array[String]) {
        print("for loop iterating...\n")
        var result = for( a <- 1 to 5) yield a
        print(result)
    }
}

输出:

for loop iterating...
Vector(1, 2, 3, 4, 5)

在 Scala 中使用 foreach 循环迭代列表

除了命令式使用之外,我们还可以使用 foreach 循环来迭代列表元素。在使用内置集合时,我们不需要指定循环的任何端点或 until 关键字,因为 Scala 解释器会处理它并在集合中没有元素时退出循环。

例子:

object MyClass {
    def main(args: Array[String]) {
        print("for loop iterating...\n")
        var list = List(1,52,35,6,8,9)
        for( i <- list){
            println(i)
        }
    }
}

输出:

for loop iterating...
1
52
35
6
8
9

使用 Scala 的 foreach() 函数

Scala 在 List 类中提供了一个内置的 foreach() 函数来迭代列表元素,因此我们不再需要使用循环。作为参数,此函数接受 lambda 表达式并返回结果。

在这里,我们将 print 语句传递给 foreach() 以将元素打印到控制台。

例子:

object MyClass {
    def main(args: Array[String]) {
        print("for loop iterating...\n")
        var list = List(1,52,35,6,8,9)
        list.foreach(println)
    }
}

输出:

for loop iterating...
1
52
35
6
8
9

下面是另一个示例,我们只需传递一个表达式即可获得列表中所有元素的总和。我们通过表达式来获得总和而不是打印语句。

object MyClass {
    def main(args: Array[String]) {
        var sum = 0;
        print("for loop iterating...\n");
        var list = List(1,5,35,6,8,9);
        list.foreach(sum += _)
        print(sum);
    }
}

输出:

for loop iterating...
64

在 Scala 中使用带有 Vector 的 foreach 函数

我们可以类似地使用带有 Vector 的 foreach 函数来遍历元素。Vector 是 Scala 中的一个序列,它将元素保存在键值对中。

例子:

object MyClass {
    def main(args: Array[String]) {
        print("foreach loop iterating...\n");
        val nums = Vector((1,8), (2,9), (3,7), (4,6), (5,5))
        nums.foreach {
            case(key, value) => println(s"key: $key, value: $value")
        }
    }
}

输出:

foreach loop iterating...
key: 1, value: 8
key: 2, value: 9
key: 3, value: 7
key: 4, value: 6
key: 5, value: 5