Scala 函式庫包含豐富的集合類別,而這些類別包含豐富的方法。集合類別同時提供不可變和可變形式。
建立清單
為了讓您了解這些運作方式,以下提供一些使用 List
類別的範例,這是一個不可變的連結清單類別。這些範例顯示建立已填入資料的 List
的不同方式
val a = List(1, 2, 3) // a: List[Int] = List(1, 2, 3)
// Range methods
val b = (1 to 5).toList // b: List[Int] = List(1, 2, 3, 4, 5)
val c = (1 to 10 by 2).toList // c: List[Int] = List(1, 3, 5, 7, 9)
val e = (1 until 5).toList // e: List[Int] = List(1, 2, 3, 4)
val f = List.range(1, 5) // f: List[Int] = List(1, 2, 3, 4)
val g = List.range(1, 10, 3) // g: List[Int] = List(1, 4, 7)
List
方法
在您建立已填入資料的清單後,以下範例顯示您可以呼叫的其中一些方法。請注意,這些都是函式方法,表示它們不會變更呼叫它們的集合,而是傳回包含已更新元素的新集合。每一行傳回的結果顯示在每行的註解中
// a sample list
val a = List(10, 20, 30, 40, 10) // List(10, 20, 30, 40, 10)
a.drop(2) // List(30, 40, 10)
a.dropWhile(_ < 25) // List(30, 40, 10)
a.filter(_ < 25) // List(10, 20, 10)
a.slice(2,4) // List(30, 40)
a.tail // List(20, 30, 40, 10)
a.take(3) // List(10, 20, 30)
a.takeWhile(_ < 30) // List(10, 20)
// flatten
val a = List(List(1,2), List(3,4))
a.flatten // List(1, 2, 3, 4)
// map, flatMap
val nums = List("one", "two")
nums.map(_.toUpperCase) // List("ONE", "TWO")
nums.flatMap(_.toUpperCase) // List('O', 'N', 'E', 'T', 'W', 'O')
這些範例顯示如何使用「foldLeft」和「reduceLeft」方法來加總一連串整數中的值
val firstTen = (1 to 10).toList // List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
firstTen.reduceLeft(_ + _) // 55
firstTen.foldLeft(100)(_ + _) // 155 (100 is a “seed” value)
Scala 集合類別提供更多方法,這些方法在 集合章節 和 API 文件 中有說明。
元組
Scala 元組是一種類型,可讓您輕鬆地將不同類型的集合放入同一個容器中。例如,給定此 Person
案例類別
case class Person(name: String)
以下是建立包含 Int
、String
和自訂 Person
值的元組的方法
val t = (11, "eleven", Person("Eleven"))
取得元組後,您可以透過將其繫結到變數或按數字存取其值
t(0) // 11
t(1) // "eleven"
t(2) // Person("Eleven")
您也可以使用此 萃取器 方法將元組欄位指派給變數名稱
val (num, str, person) = t
// result:
// val num: Int = 11
// val str: String = eleven
// val person: Person = Person(Eleven)
當您想將異質類型的集合放入類似小集合的結構中時,元組會很好用。請參閱 參考文件 以取得更多元組詳細資料。
此頁面的貢獻者
內容
- 簡介
- Scala 功能
- 為何選擇 Scala 3?
- Scala 體驗
- Hello, World!
- REPL
- 變數和資料類型
- 控制結構
- 網域建模
- 方法
- 一級函式
- 單例物件
- 集合
- 背景抽象
- 頂層定義
- 摘要
- 初探類型
- 字串內插
- 控制結構
- 網域建模
- 工具
- OOP 建模
- FP 建模
- 方法
- 方法功能
- Scala 3 中的主要方法
- 摘要
- 函式
- 匿名函式
- 函式變數
- Eta 展開
- 高階函式
- 撰寫您自己的 map 方法
- 建立傳回函式的函式
- 摘要
- 封裝和匯入
- Scala 集合
- 集合類型
- 集合方法
- 摘要
- 函式程式設計
- 什麼是函式程式設計?
- 不可變值
- 純函式
- 函式是值
- 函式錯誤處理
- 摘要
- 類型和類型系統
- 推論類型
- 泛型
- 交集類型
- 聯集類型
- 代數資料類型
- 變異性
- 不透明類型
- 結構類型
- 依賴函式類型
- 其他類型
- 背景抽象
- 擴充方法
- 背景參數
- 背景界限
- Given 匯入
- 類型類別
- 多重等價性
- 隱式轉換
- 摘要
- 並行性
- Scala 工具
- 使用 sbt 建置和測試 Scala 專案
- 工作表
- 與 Java 互動
- Java 開發人員的 Scala
- JavaScript 開發人員的 Scala
- Python 開發人員的 Scala
- 後續步驟