为什么" for(index,(a,b))在dict.enumerated()"产生错误?

时间:2016-09-30 06:51:49

标签: swift for-loop dictionary swift3

我试图遍历字典:

let someDict = [...]
for (index, (a, b)) in someDict.enumerated() {

}

它显示了一个错误:

  

无法表达元组转换'(offset:Int,element:(key:String,value:String))' to'(Int,(String,String))'

这真的很奇怪。因为如果我们比较所需的元组:

(offset: Int, element: (key: String, value: String))

在for循环中使用元组类型:

(Int, (String, String))

它们兼容!

为什么会这样?

请注意,我知道词典没有特定的顺序,因此知道KVP的索引不是很有用。但我仍然想知道为什么这不起作用。

1 个答案:

答案 0 :(得分:0)

来自The Swift Programming Language (Swift 3) "When an element of a tuple type has a name, that name is part of the type."

我发现依赖类型推断是这样的:

  let someDict = [...]
  for tuple in someDict.enumerated() {
    let index = tuple.offset
    let a = tuple.element.key
    let b = tuple.element.value

  }

避免必须显式键入元组

  var tuple: (offset: Int, element: (key: String, value: String))