HOWTO · Scala

:: 和 ::: 在 Scala 中的區別

本文展示了 Scala 中 :: 和 ::: 運算子之間的區別。

本頁內容

本文將區分 Scala 中的 :: 和 :::,它們是列表常用的運算子。

Scala 中的 :: 運算子

Scala 的 :: 運算子通常用於將單個元素新增到列表中。它返回帶有新增元素的列表。

定義:

def ::(x: A): List[A]

示例 1:

object MyClass {
    def main(args: Array[String]):Unit= {
        val fruits = List("apples", "oranges", "pears")
        val basket = "Mangoes"::fruits
        println(basket)
    }
}

輸出:

List(Mangoes, apples, oranges, pears)

在這裡,我們可以看到 Mangoes 被新增到 fruits 列表中。

示例 2:

object MyClass {
    def main(args: Array[String]):Unit= {
        val fruits = List("apples", "oranges", "pears")
        val groceries = List("rice","biscuits")
        val baskets = groceries::fruits
        println(baskets)
    }
}

輸出:

List(List(rice, biscuits), apples, oranges, pears)

我們可以觀察到完整的 groceries 列表,而不僅僅是它的內容,被新增到列表 fruits 之前。

Scala 中的 ::: 運算子

Scala 中的 ::: 運算子用於連線兩個或多個列表。然後它返回連線列表。

示例 1:

object MyClass {
    def main(args: Array[String]):Unit= {
        val fruits = List("apples", "oranges", "pears")
        val groceries = List("rice","biscuits")
        val baskets = groceries ::: fruits
        println(baskets)
    }
}

輸出:

List(rice, biscuits, apples, oranges, pears)

我們可以觀察到列表 groceries 元素連線到列表 fruits。

與前面使用:: 的示例返回巢狀列表相比,這個使用::: 的示例返回一個包含所有元素連線的簡單列表。

示例 2:

object MyClass {
    def main(args: Array[String]):Unit= {
        val fruits = List("apples", "oranges", "pears")
        val groceries = List("rice","biscuits")
        val flowers = List("daisy","rose","tulips")
        val baskets = groceries ::: fruits ::: flowers
        println(baskets)
    }
}

輸出:

List(rice, biscuits, apples, oranges, pears, daisy, rose, tulips)