斯卡拉 |元组
元组是元素的集合。元组是异构数据结构,即它们可以存储不同数据类型的元素。元组是不可变的,不像 Scala 中的数组是可变的。
存储整数、字符串和布尔值的元组示例。
val name = (15, "Chandan", true)
元组的类型由它包含的元素的数量和这些元素的数据类型定义。
例如:
// this is tuple of type Tuple3[ Int, String, Boolean ]
val name = (15, "Chandan", true)
设 N 为元组中的元素数。 Scala 目前限制一个元组中的元素为 22 个,即 N 应该是1<=N<=22 ,元组最多可以有 22 个元素,如果元素个数超过 22 则会产生错误。但是我们可以使用嵌套元组来克服这个限制(注意一个元组可以包含其他元组)
元组上的操作
- 从元组访问元素:可以使用下划线语法访问元组元素,方法tup._i用于访问元组的第 i 个元素。
例子 :// Scala program to access // element using underscore method // Creating object object gfg { // Main method def main(args: Array[String]) { var name = (15, "chandan", true) println(name._1) // print 1st element println(name._2) // print 2st element println(name._3) // print 3st element } }
输出:15 chandan true
- 元组上的模式匹配:模式匹配是一种根据模式检查值的机制。一个成功的匹配也可以将一个值解构为它的组成部分。
例子 :// Scala program of pattern matching on tuples // Creating object object gfg { // Main method def main(args: Array[String]) { var (a, b, c) = (15, "chandan", true) println(a) println(b) println(c) } }
输出:15 chandan true
这里,在上面的例子中 var (a, b, c)= (15, “chandan”, true) 表达式赋值 a = 15, b = “chandan”, c = true。
- 对元组进行迭代:要对元组进行迭代,使用tuple.productIterator()方法。
例子 :// Scala program to iterate over tuples // using productIterator method // Creating object object gfg { // Main method def main(args: Array[String]) { var name = (15, "chandan", true) // The foreach method takes a function // as parameter and applies it to // every element in the collection name.productIterator.foreach{i=>println(i)} } }
输出:15 chandan true
- 将元组转换为字符串:将元组转换为字符串会将其所有元素连接成一个字符串。我们为此使用tuple.toString()方法。
例子 :// Scala program to convert tuple element to String // Creating object object gfg { // Main method def main(args: Array[String]) { val name = (15, "chandan", true) // print converted string println(name.toString() ) } }
输出:(15, chandan, true)
- 交换元组的元素:交换元组的元素我们可以使用tuple.swap方法。
例子 :// Scala program to swap tuple element // Creating object object gfg { // Main method def main(args: Array[String]) { val name = ("geeksforgeeks","gfg") // print swapped element println(name.swap) } }
输出:(Geeksquize,geeksforgeeks)