Ответ 1
В инструкции не требуется var и пусть. Введите это:
for key in dict.keys {
str += key + ":" + dict[key]!.description + "\n"
}
У меня есть следующий код в быстром файле:
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
Почему я получаю предупреждение, когда предлагаемая коррекция является ошибкой компилятора?
В инструкции не требуется var и пусть. Введите это:
for key in dict.keys {
str += key + ":" + dict[key]!.description + "\n"
}
Я думаю, что ответ здесь заключается в том, что цикл for-in по умолчанию предоставляет ключ, который уже является константой. Поэтому использование ключевого слова let является избыточным. Когда вы использовали ключевое слово var, вы говорили, что хотите использовать переменный ключ, но вы его никогда не меняете, поэтому вам не нужно использовать var.