gpt4 book ai didi

android - Kotlin:可空属性委托(delegate)可观察

转载 作者:IT老高 更新时间:2023-10-28 13:29:31 25 4
gpt4 key购买 nike

在 Kotlin 中,我们可以为非空属性定义一个 observable,

var name: String by Delegates.observable("<no name>") {
prop, old, new ->
println("$old -> $new")
}

这是不可能的

var name: String? by Delegates.observable("<no name>") {
prop, old, new ->
println("$old -> $new")
}

为可空属性定义可观察对象的方法是什么?

编辑:这是编译错误

Property delegate must have a 'setValue(DataEntryRepositoryImpl, KProperty<*>, String?)' method. None of the following functions is suitable: 
public abstract operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String): Unit defined in kotlin.properties.ReadWriteProperty

最佳答案

由于某种原因,类型推断在这里失败。您必须手动指定委托(delegate)的类型。相反,您可以省略属性类型声明:

var name by Delegates.observable<String?>("<no name>") {
prop, old, new ->
println("$old -> $new")
}

请在 https://youtrack.jetbrains.com/issues/KT 提出问题

关于android - Kotlin:可空属性委托(delegate)可观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41536009/

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