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