我希望创建一个数组扩展,将数组转换为具有通用键/值类型的字典。
这是我的代码:
这适用于一些情况,例如:
这将导致编译器错误,显示如下信息:
这是我的代码:
extension Array {
func transformToDictionary<K: Hashable, V>(@noescape mappingFunction: (Array.Generator.Element) -> (K, V)) -> [K: V] {
var dict: [K: V] = [:]
for el in self {
let result = mappingFunction(el)
dict[result.0] = result.1
}
return dict
}
}
这适用于一些情况,例如:
let stringArray = ["String1", "String2"]
stringArray.transformToDictionary({ (element: String) -> (Int, String) in
return (element.hashValue, element)
})
但在另一种情况下却不起作用,例如:
let nestedStringArray = [["String1"], ["String2"]]
stringArray.transformToDictionary({ (element: [String]) -> (Int, String) in
return (element.first!.hashValue, element.first!)
})
这将导致编译器错误,显示如下信息:
我在这里做错了什么,还是这是Swift编译器的错误?无法使用类型为(([String) -> (Int, String))的参数列表调用'transformToDictionary'