Подтвердить что ты не робот

Swift 2: неизменяемое значение X никогда не используется, рассматривая замену на '_'

В нескольких случаях моего старого кода я получаю предупреждение:

Неизменяемое значение X никогда не используется, рассматривая замену на '_'

Например, это часто возникает, если я проверяю перечисление, у которого есть связанный объект (но я не использую этот объект в этом случае) - или если я использую конструкцию "Если да", чтобы проверить, является ли объект ноль или нет.

Это не мешает мне так много, чтобы пройти эти предупреждения и внести изменения, но я задавался вопросом, знал ли кто-нибудь, почему это рекомендуется, - зачем беспокоиться об этом? Не повлияет ли это на производительность?

4b9b3361

Ответ 1

Неизменяемое значение X никогда не используется, рассматривая замену на "_"

это предупреждение появляется, потому что вы не используете свою переменную после объявления ее. просто игнорируйте предупреждение и продолжайте писать свой код и используете свой объект, он исчезнет.

Swift 2 - очень чувствительный язык, который даст вам предупреждение на каждом шагу.

Я объясняю простую демонстрацию предупреждения о любом объекте здесь: 1. Неизменяемое значение X никогда не используется, рассматривая замену на '_' это произойдет, когда вы не будете использовать объект и объявите его только. Пример: -

var nameImg:String = "";

2. переменная 'nameImg'а была написана, но никогда не читалась. это произойдет, когда вы присвоите свой объект какой-либо ценности, но вы все еще не используете его ни в каком другом объекте. Ex -

  var nameImg:String = "";
                    if(action==1){
                        nameImg  = "navTab";
                    }
                    else{
                        nameImg  = "back";
                    }

3. Нет предупреждений, если вы назначаете какое-либо значение своему объекту и также используете его в другом объекте;).

Ex-

 var nameImg:String = "";
                    if(action==1){
                        nameImg  = "navTab";
                    }
                    else{
                        nameImg  = "back";
                    }


                    //back & menu btn
                    let btnBack = UIButton(type: UIButtonType.Custom);
                    btnBack.setImage(UIImage(named:nameImg), forState: UIControlState.Normal);
                    btnBack.sizeToFit();

Ответ 2

Эти изменения рекомендуются, потому что, если вы вообще не используете эти переменные, вам стоит подумать о замене его на "_". Таким образом, вы (и другие люди) можете позже понять свое намерение быстрее.

С точки зрения производительности это, вероятно, будет лишь незначительным улучшением, которое вы вообще не заметите. Такая же ситуация применяется при компиляции и оптимизации вашего кода.

Ответ 3

Как правило, вы должны работать без предупреждения в повседневной работе. Очевидная причина заключается в том, что вы собираетесь пропустить настоящие и важные предупреждения, если ваш код производит сотни не очень важных предупреждений.

Дело, которое вы описываете, лучше всего решить таким образом: вместо использования if let myObject = myObject вам лучше использовать:

if myObject != nil 

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

Ответ 4

Это потому, что ваше значение никогда не использовалось после объявления его, у меня была такая же проблема не так давно.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)


    let row = indexPath.row <-----

Я обнаружил, что просто распечатал его после того, как ошибка исчезла.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)


    let row = indexPath.row <---
    print(row) <---