если позволить предупреждение в Swift 2.0

Swift 2.0 выдает предупреждения

Неизменяемое значение 'a' никогда не использовалось; Попробуйте заменить его на «_» или удалить.

Можно ли заменить if-let на «_»?

if let a = responseString {  
    //Code
}

person Coder    schedule 24.08.2015    source источник


Ответы (3)


Это означает, что код никогда не обращался/не использовал константу "let a" внутри блока if.

Вероятно, вам вообще не нужен блок if, если вам не нужен доступ к «let a». Может быть, вместо этого вы использовали responseString!? Или вы хотите выполнить свой код только в том случае, если responseString не равен нулю (тогда это сделает простой if responseString != nil)?

После блока if «let a» будет помечен для сборки мусора или помечен для удаления после блока if во время компиляции (не уверен в этом).

Таким образом, компилятор считает хорошей идеей заменить условие, так как присваивание

let a = responseString 

приведет к ложному, если

responseString == nil

и верно во всех остальных случаях.

Это назначение условий используется в 99% случаев, чтобы гарантировать, что, например. обнуляемая переменная responseString не является нулевой или даже чаще, чтобы автоматически разворачивать ее на лету.

person Frithjof Schaefer    schedule 24.08.2015

Синтаксис, который я видел,

if let _ = responseString 
{
  //Code
}

Это только запускает код внутри фигурных скобок, если responseString не равен нулю, но не создает новую константу.

Не уверен, что компилятор подразумевает под «рассмотрите возможность замены его на ''». Ошибки и предупреждения компилятора Swift иногда кажутся бессмысленными.

person Duncan C    schedule 24.08.2015

Другими словами: (возможно, проще для новых кодеров)

Это просто говорит о том, что одна из переменных была создана, но никогда не использовалась. Поэтому, если вы использовали var a где-то еще, он исчезнет. Это тоже всего лишь предупреждение, которое при желании можно проигнорировать.

У меня была та же проблема с моим кодом, и я просто прокомментировал инициализацию переменной, поскольку в настоящее время она не используется. Решение, которое предлагает компилятор (замена на _), не подходит в тех случаях, когда вам нужна переменная с таким именем для будущего использования.

person J. Axup    schedule 13.10.2016