对于beta 5更改,我遇到了与下面扩展中的KeyType和ValueType相关的错误。
extension Dictionary {
func filter(predicate: (key: KeyType, value: ValueType) -> Bool) -> Dictionary {
var filteredDictionary = Dictionary()
for (key, value) in self {
if predicate(key: key, value: value) {
filteredDictionary.updateValue(value, forKey: key)
}
}
return filteredDictionary
}
}
我可能会遗漏一些内容,但我似乎无法在发行说明中找到任何相关更改,我知道这在beta 3中有效。
答案 0 :(得分:7)
Dictionary
声明已更改为仅使用Key
和Value
作为其关联类型,而不是KeyType
和ValueType
:
// Swift beta 3:
struct Dictionary<KeyType : Hashable, ValueType> : Collection, DictionaryLiteralConvertible { ... }
// Swift beta 5:
struct Dictionary<Key : Hashable, Value> : CollectionType, DictionaryLiteralConvertible { ... }
所以你的扩展只需要:
extension Dictionary {
func filter(predicate: (key: Key, value: Value) -> Bool) -> Dictionary {
var filteredDictionary = Dictionary()
for (key, value) in self {
if predicate(key: key, value: value) {
filteredDictionary.updateValue(value, forKey: key)
}
}
return filteredDictionary
}
}