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]
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]中返回的计数。在并发编程中,它们在actor之间作为消息传递数据值列表时也很有用。
Scala Tuples - 示例
object Demo {
def main(args: Array[String]) {
val t=(4,3,2,1)
val sum=t._1 + t._2 + t._3 + t._4
println</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Sum of elements: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> sum </span><span class="pun">)</span><span class="pln">
}
}
将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
Sum of elements: 10
Scala Tuples - 遍历元组
您可以使用 Tuple.productIterator()方法来遍历元组的所有元素。
object Demo {
def main(args: Array[String]) {
val t=(4,3,2,1)
t</span><span class="pun">.</span><span class="pln">productIterator</span><span class="pun">.</span><span class="kwd">foreach</span><span class="pun">{</span><span class="pln"> i </span><span class="pun">=></span><span class="pln">println</span><span class="pun">(</span><span class="str">"Value="</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> i </span><span class="pun">)}</span><span class="pln">
}
}
将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
Value=4 Value=3 Value=2 Value=1
Scala Tuples - toString()
您可以使用 Tuple.toString()方法将元组的所有元素连接成一个字符串。
object Demo {
def main(args: Array[String]) {
val t=new Tuple3(1, "hello", Console)
println</span><span class="pun">(</span><span class="str">"Concatenated String: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> t</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln">
}
}
将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
Concatenated String: (1,hello,scala.Console$@281acd47)
Scala Tuples - Swap交换
您可以使用 Tuple.swap 方法交换Tuple2的元素。
object Demo {
def main(args: Array[String]) {
val t=new Tuple2("Scala", "hello")
println</span><span class="pun">(</span><span class="str">"Swapped Tuple: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> t</span><span class="pun">.</span><span class="pln">swap </span><span class="pun">)</span><span class="pln">
}
}
将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。
\>scalac Demo.scala \>scala Demo
Swapped tuple: (hello,Scala)