Spec-Zone.ru › Kotlin 2

getValue

kotlin-stdlib/kotlin/getValue

Начиная с Kotlin: 1.4

inline operator fun <V> KProperty0<V>.getValue(thisRef: Any?, property: KProperty<*>): V

Оператор расширения, позволяющий делегировать свойство только для чтения типа V ссылке на свойство типа V или его подтипа.

Получатель

Ссылка на свойство только для чтения или изменяемое свойство типа V или его подтипа. Ссылка не имеет получателя: она ссылается либо на свойство верхнего уровня, либо на свойство с привязанным получателем.

Пример:

class Login(val username: String)
val defaultLogin = Login("Admin")
val defaultUsername by defaultLogin::username
// equivalent to
val defaultUserName get() = defaultLogin.username

inline operator fun <T, V> KProperty1<T, V>.getValue(thisRef: T, property: KProperty<*>): V

Оператор расширения, позволяющий делегировать свойство-член или свойство-расширение только для чтения типа V ссылке на свойство-член или свойство-расширение типа V или его подтипа.

Получатель

Ссылка на свойство только для чтения или изменяемое свойство типа V или его подтипа. Ссылка имеет непривязанный получатель типа T.

Пример:

class Login(val username: String)
val Login.user by Login::username
// equivalent to
val Login.user get() = this.username

inline operator fun <T> Lazy<T>.getValue(thisRef: Any?, property: KProperty<*>): T

Расширение для делегирования свойства только для чтения типа T экземпляру Lazy.

Это расширение позволяет использовать экземпляры Lazy для делегирования свойств: val property: String by lazy { initializer }

Примеры

import kotlin.concurrent.thread

fun main() { 
   //sampleStart 
   val answer: Int by lazy {
    println("Computing the answer to the Ultimate Question of Life, the Universe, and Everything")
    42
}

println("What is the answer?")
// Will print 'Computing...' and then 42
println(answer) // 42
println("Come again?")
// Will just print 42
println(answer) // 42 
   //sampleEnd
}

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/get-value.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API