compactMapValues不过滤零值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了compactMapValues不过滤零值相关的知识,希望对你有一定的参考价值。
字典上的[compactMapValues
返回带有nil
值的字典。
我正在使用大多数文档中建议的方法。 compactMapValues { $0 }
extension Dictionary where Key == RequestParameter {
func nilFiltered() -> [RequestParameter: Any] {
return compactMapValues { $0 }
}
}
RequestParameter是一个枚举,我正在调用类似方法。
[RequestParameter.param1: "value1", RequestParameter.param2: nil]. nilFiltered()
没有进行必要的过滤。这是一个已知的错误还是我做错了?
答案
[RequestParameter.param1: "value1", .param2: nil]
是[RequestParameter: String?]
,它引入了双重可选性。要么这样做:
extension Dictionary where Key == RequestParameter {
func nilFiltered<Wrapped>() -> [RequestParameter: Any]
where Value == Wrapped? {
compactMapValues { $0 }
}
}
或者如果您实际上不需要Any
,请避免该垃圾!
extension Dictionary where Key == RequestParameter {
func nilFiltered<Wrapped>() -> [RequestParameter: Wrapped]
where Value == Wrapped? {
compactMapValues { $0 }
}
}
以上是关于compactMapValues不过滤零值的主要内容,如果未能解决你的问题,请参考以下文章