В настоящее время у меня есть какой-то быстрый код, как это:Свифта переменная не инициализируется перед использованием (но не используется)
class C {
let type: Type;
var num = 0;
init() {
self.type = Type({ (num: Int) -> Void in
self.num = num;
});
}
}
Свифт компилятор отказывается разрешить его, сказав, что я ссылается self.type
до того он инициализирован, хотя это явно совершенно неверно. Кроме того, я не могу использовать обходной путь, найденный в других вопросах/ответах, потому что type
не является необязательным, и он неизменен, поэтому он не может быть инициализирован с nil
бессмысленно первым.
Как я могу заставить компилятор Swift принять этот вполне допустимый код?
Это не имеет никакого отношения к возврату из инициализатора в начале. Обратный вызов выполняется асинхронно - он сохраняется и затем используется позже.
У меня также есть еще несколько let
s, которые инициализируются после этого. Я должен был бы превратить их в в изменяемые опции, даже если они не являются необязательными и не могут быть изменены.
У вас может быть что-то типа «Тип»? –
Не имеет значения.Любой тип, который выполняет обратный вызов этой сигнатуры в конструкторе.] – Puppy
Вы правы, я удалил его. –