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不过滤零值的主要内容,如果未能解决你的问题,请参考以下文章

为什么我不能在此片段中生成唯一对象数组?

在Pandoc lua过滤器中连接字符串片段

Scapy BPF 过滤器不工作

零值的熊猫堆积面积图

Lua“尝试索引?(一个零值)

js简洁代码片段