属性引用

为了访问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"
}

results matching ""

    No results matching ""