如果在kotlin中设置setter private,如何分配新值?

Lal*_*era 0 kotlin

我是kotlin的新手并且无法理解getter和setter在kotlin中的行为,所以如果我将setter设置为private.那么更新值的方法是什么.

package foo

class Person() {
var name: String = "defaultValue"
   private set

}
Run Code Online (Sandbox Code Playgroud)

Jan*_*son 6

如果将setter设置为private,则只能从其类中访问此setter.换句话说,即使你的setter是私有的,你也可以使用正常的赋值,但只能在类中.

class Person() {
    var name: String = "defaultValue"
        private set

    fun foo(bar: String) {
        name = bar // name can be set here
    }
}

fun main(args: Array<String>) {
    Person().name = "foo" // error. Name can be accessed but can not be modified here as its setter is private.
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看Kotlin的可见性文档.