在 Scala 中,元组(Tuple)是一种可以包含多个个不同类型元素的不可变集合。它是将多个个值组合在一起的简单方式,不需要像类那样预先定义结构。
元组的基本特性
- 元组的元素可以是不同类型
- 元组是不可变的,创建后不能修改其元素
- 元组的长度是固定的,在创建时就已确定
- 元组最多可以包含 22 个元素(Tuple1 到 Tuple22)
元组的创建与使用
创建元组非常简单,使用小括号并用逗号分隔元素:
// 创建元组
val tuple1 = (1, "Hello", 3.14, true) // 包含4个不同类型元素的元组
val tuple2 = ("Scala", 2023) // 二元组
val emptyTuple = () // 空元组
// 访问元组元素(索引从1开始)
println(tuple1._1) // 输出:1
println(tuple1._2) // 输出:Hello
println(tuple2._1) // 输出:Scala
// 元组的模式匹配
val (a, b) = tuple2
println(a) // 输出:Scala
println(b) // 输出:2023
// 遍历元组
tuple1.productIterator.foreach(println)
常见用途
-
函数返回多个值:当需要返回多个不同类型的值时,元组是很方便的选择
scala
def getUser(): (String, Int, String) = { ("Alice", 30, "Engineer") } val (name, age, job) = getUser() -
临时数据组合:在不需要定义专门类的情况下,临时组合相关数据
val map = Map(("a", 1), ("b", 2)) // 等价于 Map("a" -> 1, "b" -> 2)
注意事项
- 元组的元素访问使用
_n语法,其中n从 1 开始(与 Scala 集合的 0 基索引不同) - 对于包含两个元素的元组,可以使用
->符号创建,如key -> value等价于(key, value) - 元组没有提供太多方法,主要用于简单的数据组合,如果需要复杂操作,考虑使用案例类(case class)