Scala Tuples函数详解

首页 / Scala入门教程 / Scala Tuples函数详解

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( "Sum of elements: "  + sum )
   }
}

将上述程序保存在 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.productIterator.foreach{ i =>println("Value=" + i )}
   }
}

将上述程序保存在 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("Concatenated String: " + t.toString() )
   }
}

将上述程序保存在 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("Swapped Tuple: " + t.swap )
   }
}

将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。

\>scalac Demo.scala
\>scala Demo
Swapped tuple: (hello,Scala)

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入浅出区块链 -〔陈浩〕

算法面试通关40讲 -〔覃超〕

Spring Boot与Kubernetes云原生微服务实践 -〔杨波〕

罗剑锋的C++实战笔记 -〔罗剑锋〕

Go 并发编程实战课 -〔晁岳攀(鸟窝)〕

技术面试官识人手册 -〔熊燚(四火)〕

Kubernetes入门实战课 -〔罗剑锋〕

商业思维案例笔记 -〔曹雄峰〕

高并发系统实战课 -〔徐长龙〕

好记忆不如烂笔头。留下您的足迹吧 :)