10.数据类
2020-07-28 本文已影响0人
学吉他的袁先生
1.对应java中的javabean,主动生成hashcode,toString,copy等方法
2.主构造器里面有多少个成员属性,就会生成多少个component方法
data class Country(val id: Int, val name: String)
fun main() {
val china = Country(0, "中国")
println(china.id)
println(china.name)
println(china.component1())
println(china.component2())
}
还可以这样子创建对象
val (id, name) = Country(0, "中国")
println(id)
println(name)
下面的集合的遍历,就是这样子写法
for ((index,value) in args.withIndex()){
println(index)
println(value)
}
args.withIndex()的源码
public fun <T> Array<out T>.withIndex(): Iterable<IndexedValue<T>> {
return IndexingIterable { iterator() }
}
IndexedValue源码
//Kotlin 中可以声明泛型类型是协变还是逆变的. out 修饰类型参数是协变的, in 修饰的类型参数支持逆变.
public data class IndexedValue<out T>(public val index: Int, public val value: T)