Agregar restricciones a parámetros genéricos en extensión
Tengo esta función:
func flatten<Key: Hashable, Value>(dict: Dictionary<Key, Optional<Value>>) -> Dictionary<Key, Value> {
var result = [Key: Value]()
for (key, value) in dict {
guard let value = value else { continue }
result[key] = value
}
return result
}
Como puede ver, transforma un[Key: Value?]
diccionario en un[Key: Value]
uno (sin el opcional).
Quería extender elDictionary
clase con un nuevo método solo para clases cuyo valor es unOptional
de cualquier tipo, pero no puedo agregar restricciones a los parámetros genéricos del diccionario.
Esto es lo que probé:
extension Dictionary where Value: Optional<Any> {
func flatten() -> [Key: Any] {
var result = [Key: Any]()
for (key, value) in self {
guard let value = value else { continue }
result[key] = value
}
return result
}
}
Pero falla con error:
Type 'Value' constrained to non-protocol type 'Optional<Any>'