У Swift немає ініціалізатора типу .
“На відміну від властивостей збереженого екземпляра, ти завжди повинен надавати властивостям збереженого типу значення за замовчуванням. Це тому, що сам тип не має ініціалізатора, який може призначати значення властивості збереженого типу під час ініціалізації. "
Витяг від: Apple Inc. “Швидка мова програмування”. iBooks .
Ви можете використовувати властивість типу, значенням за замовчуванням є закриття. Отже, код у закритті буде виконуватися, коли встановлено властивість type (або змінну класу).
class FirstClass {
class var someProperty = {
return SomeType
}()
}
Але class stored properties not yet supported
(протестовано в Xcode 8).
Одна відповідь - використовувати static
, це те саме, що class final
.
Хороше посилання для цього
Встановлення значення властивості за замовчуванням із закриттям або функцією
Витяг від: Apple Inc. “Швидка мова програмування”. iBooks .
Приклад коду:
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
Відбитки
почати
встановлення значення властивості за замовчуванням із закриттям
Тож ліниво оцінюється.
dispatch_once