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