gpt4 book ai didi

function - 函数内的委托(delegate)属性

转载 作者:行者123 更新时间:2023-12-02 12:49:56 24 4
gpt4 key购买 nike

我真的不明白为什么我们可以在函数内部使用委托(delegate)属性。我们不能在函数内部创建属性,因为在函数内部我们只能创建变量。

那么怎么可能在函数内部创建委托(delegate)属性呢?

这行代码是函数内的委托(delegate)属性,我不明白为什么会这样。

val scoreFragmentArgs by navArgs<ScoreFragmentArgs>()

它有 getter 和 setter,但对我来说没有意义

最佳答案

Kotlin 委托(delegate)基于存储委托(delegate)对象,并将更改的获取/设置委托(delegate)给它。因此,可以在访问委托(delegate)变量时内联 getValue 调用。

例如:

import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty

object Delegate : ReadOnlyProperty<Any?, Int> {
override fun getValue(thisRef: Any?, property: KProperty<*>): Int = 42
}

fun main() {
val foo by Delegate
println(foo)
}

Java 中的主要方法如下所示:

   static final KProperty[] $$delegatedProperties = new KProperty[]{(KProperty)Reflection.property0(new PropertyReference0Impl(Reflection.getOrCreateKotlinPackage(MainKt.class, "123"), "foo", "<v#0>"))};

public static void main() {
System.out.println(Delegate.INSTANCE.getValue(null, $$delegatedProperties[0]));
}

如您所见,访问变量已被调用 getValue 取代。

关于function - 函数内的委托(delegate)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62879843/

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