Ale*_*lex 2 delegates properties kotlin
在 Kotlin 中,具有预设自定义获取/设置行为的属性是使用委托属性来实现的。根据文档,属性的委托只是一个带有getValue方法setValue的类
但是当我查看 的实现内部lazy时,我只找到了value属性。所以我自己尝试以这种方式实现委托。它无法编译,因为getValue和setValue没有明确实现。那么正式实施lazy工作又如何呢?
getValueLazy<T>被声明为所有s上的扩展函数(是的,这也有效!) :
来源:
public inline operator fun <T> Lazy<T>.getValue(thisRef: Any?, property: KProperty<*>): T = value
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它返回value,这正是您所期望的。
没有setValue,那很好。这只是意味着您不能用作lazy { ... }a 的属性委托var,而且您确实不能:
var foo by lazy { 10 } // compiler error
Run Code Online (Sandbox Code Playgroud)
毕竟,这无论如何也没有多大意义。
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |