delegateWithLambda.kt 341 字节
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import kotlin.reflect.KProperty

class LazyDelegate<T>(val value: T) {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): T = value
}

fun <T> lazy(block: () -> T): LazyDelegate<T> = LazyDelegate(block())

fun getAny(): Any? = null

class Test {
    val x by lazy {
        val y = getAny() as? String ?: ""
        y
    }
16
}