Kotlin 中的三重
在编程中,我们调用函数来执行特定任务。关于函数的最好的事情是我们可以调用它任意次数,它在计算后返回一些值,即如果我们有add()函数,那么它总是返回输入的两个数字的总和。但是,函数有一些限制,比如函数一次只返回一个值。如果需要返回多个不同数据类型的值,那么我们可以创建一个类并声明我们想要从函数返回的所有变量,然后创建该类的一个对象并轻松收集所有返回列表中的值。主要问题是,如果程序中有这么多函数一次返回多个值,那么我们必须为所有这些函数创建一个单独的类并最终使用该类。这个过程增加了程序的冗长和复杂性。为了处理这些类型的问题,Kotlin 引入了Pair和Triple的概念。
三重是什么?
Kotlin 语言提供了一种简单的数据类型来在一个实例中存储三个值。这可以使用称为Triple的数据类来完成。它是一个简单的泛型类,存储任意三个值,三个值之间的关系没有任何有价值的意义。两个 Triple 对象之间的比较是基于values进行的,即只有当所有三个组件都相等时,两个 Triples 才相等。
类定义:
data class Triple : Serializable
共有三个参数:
- A –第一个值的类型
- B –第二个值的类型
- C –第三个值的类型
构造函数
在 Kotlin 中,构造函数是一个特殊的成员函数,在创建类的对象时调用它,主要是为了初始化变量或属性。要创建 Triple 的新实例,我们使用:
Triple(first: A, second: B, third: C)
Kotlin 使用构造函数创建三元组的示例:
Kotlin
fun main() {
val (x, y, z) = Triple(1, "Geeks", 2.0)
println(x)
println(y)
println(z)
}
Kotlin
fun main() {
// declare triple
var triple = Triple("Hello Geeks",
"This is Kotlin tutorial",
listOf(10, 20, 30))
println(triple.first)
println(triple.second)
println(triple.third)
}
Kotlin
fun main() {
// first triple
val triple = Triple(5, 5, 5)
println("String representation is "+triple.toString())
// second triple
val triple2 = Triple("Geeks",
listOf("Praveen", "Gaurav", "Abhi"),
12345)
print("Another string representation is "+ triple2.toString())
}
Kotlin
fun main() {
// first triple
var obj = Triple(1, 2, 3)
val list1: List = obj.toList()
println(list1)
// second triple
var obj2 = Triple("Hello", 2.0000 ,
listOf(10, 20, 30))
val list2: List = obj2.toList()
println(list2)
}
输出:
1
Geeks
2.0
特性
我们可以在单个变量中接收三元组的值,也可以使用first 、 second和third属性来提取值。
- first :此字段存储 Pair 的第一个值。
- second :此字段存储 Pair 的第二个值。
- 第三:此字段存储对的第三个值。
Kotlin 程序使用属性检索 Triple 的值:
科特林
fun main() {
// declare triple
var triple = Triple("Hello Geeks",
"This is Kotlin tutorial",
listOf(10, 20, 30))
println(triple.first)
println(triple.second)
println(triple.third)
}
输出:
Hello Geeks
This is Kotlin tutorial
[10, 20, 30]
职能
toString():此函数返回与 Triple 等效的字符串。
fun toString(): String
Kotlin 程序使用函数:
科特林
fun main() {
// first triple
val triple = Triple(5, 5, 5)
println("String representation is "+triple.toString())
// second triple
val triple2 = Triple("Geeks",
listOf("Praveen", "Gaurav", "Abhi"),
12345)
print("Another string representation is "+ triple2.toString())
}
输出:
String representation is (5, 5, 5)
Another string representation is (Geeks, [Praveen, Gaurav, Abhi], 12345)
扩展功能
正如我们在之前的文章中所了解的,扩展函数提供了向现有类添加更多功能的能力,而无需继承它们。
toList():此函数返回与给定 Triple 等效的 List。
fun Triple.toList(): List
使用扩展函数的 Kotlin 程序:
科特林
fun main() {
// first triple
var obj = Triple(1, 2, 3)
val list1: List = obj.toList()
println(list1)
// second triple
var obj2 = Triple("Hello", 2.0000 ,
listOf(10, 20, 30))
val list2: List = obj2.toList()
println(list2)
}
输出:
[1, 2, 3]
[Hello, 2.0, [10, 20, 30]]