In Swift gibt es keinen Typinitialisierer .
„Im Gegensatz zu Eigenschaften gespeicherter Instanzen müssen Sie Eigenschaften gespeicherter Typen immer einen Standardwert geben. Dies liegt daran, dass der Typ selbst keinen Initialisierer hat , der einer gespeicherten Typeneigenschaft zum Zeitpunkt der Initialisierung einen Wert zuweisen kann. “
Auszug aus: Apple Inc. "Die schnelle Programmiersprache". iBooks .
Sie können eine type-Eigenschaft verwenden, deren Standardwert ein Abschluss ist. Der Code im Abschluss würde also ausgeführt, wenn die Eigenschaft type (oder die Klassenvariable) festgelegt wird.
class FirstClass {
class var someProperty = {
return SomeType
}()
}
Aber class stored properties not yet supported(getestet in Xcode 8).
Eine Antwort ist zu verwenden static, es ist die gleiche wie class final.
Guter Link dafür ist
Festlegen eines Standardeigenschaftswerts mit einem Abschluss oder einer Funktion
Auszug aus: Apple Inc. "Die schnelle Programmiersprache". iBooks .
Codebeispiel:
class FirstClass {
static let someProperty = {
() -> [Bool] in
var temporaryBoard = [Bool]()
var isBlack = false
for i in 1...8 {
for j in 1...8 {
temporaryBoard.append(isBlack)
isBlack = !isBlack
}
isBlack = !isBlack
}
print("setting default property value with a closure")
return temporaryBoard
}()
}
print("start")
FirstClass.someProperty
Druckt
Start
Festlegen des Standardeigenschaftswerts mit einem Abschluss
Also ist es faul ausgewertet.
dispatch_once