Котлин: общедоступный получить частный набор var

126

Как правильно определить var в kotlin, у которого есть общедоступный метод получения и частный (только внутренне изменяемый) сеттер?

Джаспер Блюз
источник

Ответы:

194
var setterVisibility: String = "abc" // Initializer required, not a nullable type
    private set // the setter is private and has the default implementation

См .: Свойства Getter и Setter

D3xter
источник
13
Обратите внимание, что это private setдолжно быть на новой строке.
Jasper Blues
30
... или в той же строке после точки с запятой:var abc: String = ""; private set
Boris B.
4
Однако я не понимаю, что делать с полем основного конструктора.
androidguy
2
@ user3175580 Это невозможно. Используйте локальное поле внутри основного конструктора, а затем присвойте значение свойству, например «class Foo (_bar: String) {var bar: String = _bar}
D3xter
3
@JasperBlues ... иначе вам нужно поставить точку с запятой раньше private set.
Moses Aprico
7

Вы легко можете сделать это, используя следующий подход :

var atmosphericPressure: Double = 760.0
    get() = field
    private set(value) { 
        field = value 
    }

Посмотрите этот пост на Medium: Property, Getter и Setter в Котлине .

Надеюсь это поможет.

Энди Федоров
источник
3

var name : String = "Peter"
    private set

По умолчанию все свойства и функции общедоступны в Kotlin. Следовательно, сеттер должен быть явно объявлен закрытым, в то время как геттер по умолчанию открыт.

JGPhilip
источник