:: 和 ::: 在 Scala 中的區別
Suraj P
2023年1月30日
本文將區分 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)