- Scala 教程
- Scala - 首页
- Scala - 概述
- Scala - 特性
- Scala - 环境搭建
- Scala - 构建工具 (SBT)
- Scala - 基本语法
- 数据类型和变量
- Scala - 数据类型
- Scala - 变量
- Scala - 字符串
- Scala - 数组
- Scala 运算符
- Scala - 运算符
- Scala - 算术运算符
- Scala - 关系运算符
- Scala - 逻辑运算符
- Scala - 位运算符
- Scala - 赋值运算符
- Scala 条件语句
- Scala - IF ELSE
- Scala 循环语句
- Scala - 循环语句
- Scala - while 循环
- Scala - do-while 循环
- Scala - for 循环
- Scala - break 语句
- Scala 类与对象
- Scala - 类与对象
- Scala - 访问修饰符
- Scala 方法与函数
- Scala - 函数
- Scala - 按名称调用的函数
- Scala - 带命名参数的函数
- Scala - 带变长参数的函数
- Scala - 递归函数
- Scala - 默认参数值
- Scala - 高阶函数
- Scala - 嵌套函数
- Scala - 匿名函数
- 部分应用函数
- Scala - 柯里化函数
- Scala 集合
- Scala - 集合
- Scala - 列表
- Scala - 集合
- Scala - 映射
- Scala - 元组
- Scala - 迭代器
- Scala - Options
- Scala 模式匹配
- Scala - 模式匹配
- Scala - 异常处理
- Scala - 提取器
- Scala - 正则表达式
- Scala 文件 I/O
- Scala - 文件 I/O
- Scala 高级概念
- Scala - 闭包
- Scala - 特质
- Scala 有用资源
- Scala - 快速指南
- Scala - 在线编译器
- Scala - 有用资源
- Scala - 讨论
Scala - 元组
Scala 元组将固定数量的项目组合在一起,以便可以将它们作为一个整体传递。与数组或列表不同,元组可以保存不同类型的对象,但它们也是不可变的。
以下是包含整数、字符串和控制台的元组示例。
val t = (1, "hello", Console)
这是以下内容的语法糖(快捷方式):
val t = new Tuple3(1, "hello", Console)
元组的实际类型取决于它包含的元素数量和这些元素的类型。因此,(99, "Luftballons") 的类型是 Tuple2[Int, String]。(‘u’, ‘r’, "the", 1, 4, "me") 的类型是 Tuple6[Char, Char, String, Int, Int, String]
元组的类型是 Tuple1、Tuple2、Tuple3 等。在 Scala 中,目前上限为 22,如果您需要更多,则可以使用集合,而不是元组。对于每个 TupleN 类型(其中 1 <= N <= 22),Scala 定义了许多元素访问方法。给出以下定义:
val t = (4,3,2,1)
要访问元组 t 的元素,可以使用方法 t._1 访问第一个元素,t._2 访问第二个元素,依此类推。例如,以下表达式计算 t 的所有元素的总和。
val sum = t._1 + t._2 + t._3 + t._4
您可以使用 Tuple 编写一个方法,该方法接受 List[Double] 并返回一个三元素元组 Tuple3[Int, Double, Double] 中的计数、总和和平方和。它们也可用于在并发编程中将数据值列表作为消息传递给参与者之间。
尝试以下示例程序。它演示了如何使用元组。
示例
object Demo { def main(args: Array[String]) { val t = (4,3,2,1) val sum = t._1 + t._2 + t._3 + t._4 println( "Sum of elements: " + sum ) } }
将上述程序保存到 **Demo.scala** 中。以下命令用于编译和执行此程序。
命令
\>scalac Demo.scala \>scala Demo
输出
Sum of elements: 10
迭代元组
您可以使用 **Tuple.productIterator()** 方法迭代元组的所有元素。
尝试以下示例程序以迭代元组。
示例
object Demo { def main(args: Array[String]) { val t = (4,3,2,1) t.productIterator.foreach{ i =>println("Value = " + i )} } }
将上述程序保存到 **Demo.scala** 中。以下命令用于编译和执行此程序。
命令
\>scalac Demo.scala \>scala Demo
输出
Value = 4 Value = 3 Value = 2 Value = 1
转换为字符串
您可以使用 **Tuple.toString()** 方法将元组的所有元素连接到一个字符串中。尝试以下示例程序以转换为字符串。
示例
object Demo { def main(args: Array[String]) { val t = new Tuple3(1, "hello", Console) println("Concatenated String: " + t.toString() ) } }
将上述程序保存到 **Demo.scala** 中。以下命令用于编译和执行此程序。
命令
\>scalac Demo.scala \>scala Demo
输出
Concatenated String: (1,hello,scala.Console$@281acd47)
交换元素
您可以使用 **Tuple.swap** 方法交换 Tuple2 的元素。
尝试以下示例程序以交换元素。
示例
object Demo { def main(args: Array[String]) { val t = new Tuple2("Scala", "hello") println("Swapped Tuple: " + t.swap ) } }
将上述程序保存到 **Demo.scala** 中。以下命令用于编译和执行此程序。
命令
\>scalac Demo.scala \>scala Demo
输出
Swapped tuple: (hello,Scala)