gpt4 book ai didi

android - 如何在 Kotlin 中设置属性的值

转载 作者:太空狗 更新时间:2023-10-29 15:37:38 28 4
gpt4 key购买 nike

我已尝试按照以下代码段设置属性值。这 SO question没有回答问题。

var person = Person("john", 24)
//sample_text.text = person.getName() + person.getAge()
var kon = person.someProperty
person.someProperty = "crap" //this doesn't allow me to set value
kon = "manulilated" //this allows me to set the value
sample_text.text = kon

class Person(val n: String, val a: Int){
var pname: String = n
var page: Int = a

var someProperty: String = "defaultValue"
get() = field.capitalize()
private set(value){field = value}
fun Init(nm: String, ag: Int){
pname = nm
page = ag
}

fun getAge(): Int{
return page
}

fun getName(): String{
return pname
}
}

为什么我可以在第二行而不是第一行设置 Person 类的值?

最佳答案

首先,private 修饰符是您的问题。

改变

private set(value){field = value}

set(value){field = value}
//public by default

否则你不能在类外使用setter。阅读here .

For members declared inside a class: private means visible inside this class only (including all its members);

其次,你误会了一些东西:

 var kon = person.someProperty
kon = "manulilated"

在这些行中,您没有更改对象中的属性。创建变量 kon 后,作为指向 somePropertyString,您可以将该局部变量重新分配给其他内容。此重新分配不等于更改 person.someProperty 的值!它对对象完全没有影响。

关于android - 如何在 Kotlin 中设置属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48014795/

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