在计算机编程中,Tuple 是一个有序的数值序列,你可以任意定义。
一个Tuple 数据类型通常用于从一个函数中返回多个值。
例如在Python中,一个Tuple 可以定义如下:
myTuple = ("apple", 2, False)
虽然它可能看起来像一个Array 或一个List ,但一个Tuple 是不同的,因为它可以包含不同类型的值序列。
如在上面的例子中,myTuple 包含一个string ,一个integer ,和一个boolean 的值。
在Kotlin中,对图元的支持已经被弃用,而是使用data class 来返回多个值。
Kotlin还提供了Pair 和Triple 数据类,你可以用它来返回最多三个值。
例如,这里有一个等同于Kotlin中的myTuple 变量。注意这些值是如何作为first,second, 和third 属性从对象中访问的:
val myTuple = Triple("apple", 2, false)
println(myTuple.first) // apple
println(myTuple.second) // 2
println(myTuple.third) // false
或者如果你只有两个值,你可以使用Pair 数据类:
val myTuple = Pair("apple", 2)
println(myTuple.first) // apple
println(myTuple.second) // 2
这些内置的数据类可以被用作函数的返回类型,如下图所示:
fun twoPairs(): Pair<Int, Int> {
return Pair(2, 10)
}
val myPairs = twoPairs()
println(myPairs.first) // 2
println(myPairs.second) // 10
从你的函数中返回的数据类实例也可以按如下方式进行解构:
fun twoPairs(): Pair<Int, Int> {
return Pair(2, 10)
}
val (one, two) = twoPairs()
println(one) // 2
println(two) // 10
最后,当你需要从一个函数中返回3个以上的值时,你需要定义自己的data class ,并将其作为函数的返回类型。
下面的例子显示了如何创建User 数据类来从一个函数返回4个值:
data class User(
val name: String,
val age: Int,
val gender: String,
val nationality: String,
)
fun fetchUser(): User {
return User(
"John",
25,
"Male",
"United States"
)
}
val (name, age, gender, nation) = fetchUser()
而这就是你如何使用Kotlindata class 从一个函数中返回多个值。
Kotlin在开发初期曾经支持图元,但在取得很大进展后,对图元的支持已经被弃用,转而支持data class
与使用图元相比,data class 有两个好处:
data class可以在你的源代码中的许多地方重复使用data class可以使用destructuring声明语法来提取其值
Kotlin的析构声明语法允许你声明变量,并将data class 实例值作为它们的值。