Swift for in循环:使用var get warning来使用let,使用let get error

时间:2016-09-01 11:40:56

标签: swift

我在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

为什么在建议的更正是编译器错误时会收到警告?

2 个答案:

答案 0 :(得分:25)

语句中不需要 var 允许。 输入:

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

答案 1 :(得分:1)

我认为这里的答案是默认情况下for-in循环提供一个已经是常量的键。因此,使用let关键字是多余的。当你使用var关键字时,你说你想要一个变量键,但你永远不会改变它,因此你不需要使用var。