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 № 1Nie, 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)