Scala 元组

Scala元组将固定数量的项目组合在一起,以便它们可以作为一个整体传递。 与数组或列表不同,元组可以容纳不同类型的对象,但它们也是不可变的。

以下是一个存有整数,字符串和控制台(console)的元组的示例。

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]

元组是类型Tuple1Tuple2Tuple3等等。目前在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中,使用以下命令编译和执行此程序。

D:\>scalac Demo.scala
D:\>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中,使用以下命令编译和执行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

Value = 4
Value = 3
Value = 2
Value = 1

 

 

转换为字符串

可以使用Tuple.toString()方法将元组的所有元素连接成字符串。尝试以下示例程序转换为String

以下是将元组转换为字符串的例子 -

object Demo {
   def main(args: Array[String]) {
      val t = new Tuple3(1, "hello", Console)

      println("Concatenated String: " + t.toString() )
   }
}

将上述程序保存在源文件:Demo.scala中,使用以下命令编译和执行此程序。

D:\>scalac Demo.scala
D:\>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中,使用以下命令编译和执行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

Swapped tuple: (hello,Scala)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值