Это, вероятно, очень простой вопрос ...Swift: определить переменную, а затем условно установить ее?
Вот у меня есть некоторый Swift код:
var url: NSURL
if (someValue > 1) {
var fullUrl = self.baseUrl + "?id=" + (someValue as! String);
var url = NSURL(string: fullUrl);
}
else {
var url = NSURL(string: self.baseUrl);
}
let req = NSURLRequest(URL: url);
webView.loadRequest(req);
Как вы можете видеть, что мне нужно условно инициализировать переменную url
. Тем не менее, метод, который я использовал практически во всех других сильных типах - инициализировать переменную, а затем назначить ей в выражении if, кажется, не является быстрым способом ее выполнения.
Приведенный выше код откажется от компиляции с ошибкой «переменная», используемой для инициализации ». (Конечно, от этого потока программы, вы можете увидеть, что url
всегда будут инициализированы, но Swift, видимо, ничего не принимает как сами собой разумеющиеся.)
Не определяя переменный вне результатов if
блока в неизвестной ошибке идентификатора - это, кажется, переменные определенные внутри блока if
, ограничены только внутри этого блока.
Недостаточно просто определить пустой объект NSURL, есть ли лучший способ сделать это?
Желательно, чтобы я действительно использовал let
, потому что объект NSURL никогда не изменится после его создания - и Swift обычно рекомендует использовать let
, где это возможно. Однако, как бы вы использовали let
в этом сценарии? (Я попробовал - возникают те же самые типы ошибок. Swift недоволен тем, что я фактически не объявляю сам объект в той же строке, что и оператор let
, но с использованием let
внутри блока if
результат возникает в области.)
Удаление 'var' перед' url = NSURL (string: fullUrl); 'должен делать трюк, нет? Голосование закрывается как опечатка. – dasblinkenlight