/ / Czy możliwa jest mutacja właściwości / zmiennej bezpośrednio po inicjalizacji? - szybki

Czy możliwa jest mutacja właściwości / zmiennej bezpośrednio po inicjalizacji? - szybki

Zastanawiałem się nad czymś w rodzaju poniższego fragmentu kodu, który oczywiście nie działa, ale przekazuje moją intencję. Ten daje komunikat o błędzie zmienna używana we własnej wartości początkowej.

private let formatter = NumberFormatter() {
formatter.maximumFractionDigits = 6
}

Odpowiedzi:

0 dla odpowiedzi № 1

Nie, nie można zmutować właściwości w ramach jej własnej inicjalizacji. Możesz zrobić tylko wartość początkową nieruchomości "natychmiast oceniono zamknięcie":

private let formatter: NumberFormatter = {
let fmt = NumberFormatter()
fmt.maximumFractionDigits = 6
// ...
return fmt
}()

Tworzy to NumberFormatter, ustawia pożądane właściwości, i przypisuje wynik do formatter własność.


0 dla odpowiedzi nr 2

Wydaje mi się, że to inicjator, robiąc coś takiego jest standardowe:

class NumberFormatter {
var maximumFractionDigits: Int = 0

init(maximumFractionDigits: Int) {
self.maximumFractionDigits = maximumFractionDigits
}
}

let formatter = NumberFormatter(maximumFractionDigits: 6)