Scala Tuple
Tuple 是一个元素的集合。元组是异质性的数据结构,也就是说,它们可以存储不同数据类型的元素。元组是不可变的,不像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)