我在swift文件中有以下代码:
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
为什么在建议的更正是编译器错误时会收到警告?
答案 0 :(得分:25)
语句中不需要 var , 允许。 输入:
for key in dict.keys {
str += key + ":" + dict[key]!.description + "\n"
}
答案 1 :(得分:1)
我认为这里的答案是默认情况下for-in循环提供一个已经是常量的键。因此,使用let关键字是多余的。当你使用var关键字时,你说你想要一个变量键,但你永远不会改变它,因此你不需要使用var。