Kotlin: Public get private set var

126

Jaki jest prawidłowy sposób definiowania zmiennej w kotlinie, która ma publiczny getter i prywatny (tylko wewnętrznie modyfikowalny) ustawiacz?

Jasper Blues
źródło

Odpowiedzi:

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

Zobacz: Właściwości Getter i Setter

D3xter
źródło
13
Zauważ, że private setmusi znajdować się w nowej linii.
Jasper Blues
30
... lub w tym samym wierszu, po średniku:var abc: String = ""; private set
Boris B.
4
Nie wiem jednak, co zrobić z głównym polem konstruktora.
androidguy
2
@ user3175580 To nie jest możliwe. Użyj lokalnego pola wewnątrz głównego konstruktora, a następnie przypisz wartość do właściwości, np. „Class Foo (_bar: String) {var bar: String = _bar}
D3xter
3
@JasperBlues ... w przeciwnym razie musisz wcześniej dodać średnik private set.
Moses Aprico
7

Możesz to łatwo zrobić, stosując następujące podejście :

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

Spójrz na ten post na Medium: Property, Getter and Setter in Kotlin .

Mam nadzieję że to pomoże.

Andy Fedoroff
źródło
3

var name : String = "Peter"
    private set

Domyślnie wszystkie właściwości i funkcje są publiczne w Kotlinie. Dlatego ustawiający musi być jawnie zadeklarowany jako prywatny, podczas gdy pobierający jest domyślnie publiczny.

JGPhilip
źródło