属性引用
为了访问Kotlin类的属性,我们可以使用::操作符:
var x = 1
fun main(args: Array<String>) {
println(::x.get()) // prints "1"
::x.set(2)
println(x) // prints "2"
}
表达式::x计算KProperty<Int>类型的属性对象,这样就允许我们使用get()读取它的值或者使用属性名取回其属性名。更多的信息请查看docs on the KProperty class。
对于一个可变的属性,比如:var y = 1,::y返回KMutableProperty<Int>类型的值,该类型的对象有set()方法。一个属性引用可以被使用在无参函数的调用中:
val strs = listOf("a", "bc", "def")
println(strs.map(String::length)) // prints [1, 2, 3]
为了访问类成员的属性,使用如下方式:
class A(val p: Int)
fun main(args: Array<String>) {
val prop = A::p
println(prop.get(A(1))) // prints "1"
}
对于扩展属性:
val String.lastChar: Char
get() = this[length - 1]
fun main(args: Array<String>) {
println(String::lastChar.get("abc")) // prints "c"
}