gpt4 book ai didi

kotlin - 在没有 getValue 和 setValue 的情况下,Kotlin 的 `lazy` 实现如何工作?

转载 作者:行者123 更新时间:2023-12-01 23:05:25 25 4
gpt4 key购买 nike

在具有预设自定义获取/设置行为的 Kotlin 属性中,使用 delegated properties 实现.根据文档,属性的委托(delegate)只是一个具有 getValuesetValue 方法的类

但是当我往里面看时the implementation of lazy ,我只找到了 value 属性。所以我自己尝试以这种方式实现委托(delegate)。编译失败,因为 getValuesetValue 没有明确实现。那么lazy的官方实现是如何工作的呢?

最佳答案

getValue在所有 Lazy<T> 上声明为扩展函数(是的,它也有效!)小号:

Source :

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

如您所见,它返回 value ,这正是您所期望的。

没有setValue ,那很好。那只是意味着你不能使用 lazy { ... }作为 var 的属性(property)委托(delegate),你确实不能:

var foo by lazy { 10 } // compiler error

毕竟,这无论如何都没有多大意义。

关于kotlin - 在没有 getValue 和 setValue 的情况下,Kotlin 的 `lazy` 实现如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71023478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com