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