Swift for in loop: используйте var get warning для использования let, use let get error

У меня есть следующий код в быстром файле:

func testDictionary(dict :Dictionary<String,AnyObject>) {
    var str = ""
    for var key in dict.keys {
        str += key + ":" + dict[key]!.description + "\n"
    }
    self.alert("Dict", message: str)
}

Приведенный выше код выдает предупреждение пользователю var в цикле for, которое:

Variable 'key' was never mutated; consider changing to 'let' constant

Однако, когда я меняю var на let, я получаю следующую ошибку:

'let' pattern cannot appear nested in an already immutable context

Почему я получаю предупреждение, когда предлагаемая коррекция является ошибкой компилятора?

Ответ 1

В инструкции не требуется var и пусть. Введите это:

for key in dict.keys {
    str += key + ":" + dict[key]!.description + "\n"
}

Ответ 2

Я думаю, что ответ здесь заключается в том, что цикл for-in по умолчанию предоставляет ключ, который уже является константой. Поэтому использование ключевого слова let является избыточным. Когда вы использовали ключевое слово var, вы говорили, что хотите использовать переменный ключ, но вы его никогда не меняете, поэтому вам не нужно использовать var.