gpt4 book ai didi

Kotlin 通用设置函数

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

我是 kotlin 的新手。我想知道这是否可能

我希望创建一个函数来更改对象的属性值并返回对象本身。主要的好处是我可以链接这个 setter。

class Person {
var name:String? = null
var age:Int? = null

fun setter(propName:String, value:Any): Person{
return this.apply {
try {
// the line below caused error
this[propName] = value
} catch(e:Exception){
println(e.printStackTrace())
}
}
}
}


//usage
var person = Person(null,null)
person
.setter(name, "Baby")
.setter(age, 20)

但我收到错误“未知引用”

这个问题被标记为重复,但是可能的重复问题特别想更改“名称”的属性,但我希望更改从函数传递到对象的任何属性。似乎无法连接两个问题之间的点。 @Moira 请提供解释它的答案。谢谢你

最佳答案

为什么不简化你的答案

fun setter(propName: String, value: Any): Person {
val property = this::class.memberProperties.find { it.name == propName }
when (property) {
is KMutableProperty<*> ->
property.setter.call(this, value)
null ->
// no such property
else ->
// immutable property
}
}

Java 反射不是必需的,它唯一的作用是停止支持非平凡的属性。

另外,如果你称它为 operator fun set而不是 fun setter

this[propName] = value

语法可以用来调用它。

关于Kotlin 通用设置函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52088643/

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