元组使用场景
我们一定会遇到这样的场景,我们的方法想返回多个值,在 java 中我们的解决方案是:定义一个数据 bean,然后让方法返回这个数据 bean:
//定义数据类
class User {
String name;
String age;
}
//将多个返回值包装到User中进行返回
public User computer() {
User user = new User();
...
return user;
}
虽然这样可以解决问题,但是我们就为了一个临时方法就定义一个数据 bean,会显得代码臃肿,且无复用性可言;而 kotlin 为我们提供了二元组和三元组解决这个问题。
二元组 Pair 的原理
Pair 的源码如下,Pair 就是一个数据类,其实和上面的 java 中的数据 bean 一样,只是它的命名比较具有通用性,作为模板代码供开发者使用。
public data class Pair<out A, out B>(
public val first: A,
public val second: B
) : Serializable {
}
上面的 java 代码,用 Pair 代替如下:
//返回Pair
fun computer(): Pair<String, String> {
val name = ""
val age = ""
return Pair(name, age)
}
//调用Pair
val pair = computer()
val name = pair.first //访问pair的第一个元素
val name = pair.second //访问pair的第二个元素
三元组的原理
三元组 Triple 就是定义的数据类有三个元素,和二元组没什么区别,三元组的使用方式可以参考上面二元组的代码。
public data class Triple<out A, out B, out C>(
public val first: A,
public val second: B,
public val third: C
) : Serializable {
}
自定义元组
从上面的二元组和三元组的源码看,元组其实就是一个数据类,下面我们定义一个四元组:
public data class Four<out A, out B, out C, out D>(
public val first: A,
public val second: B,
public val third: C,
public val four: D
) : Serializable {
}
使用方式和上面的二元组一样。