当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Optional.Publisher compactMap(_:)用法及代码示例


实例方法

compactMap(_:)

使用每个接收到的元素调用闭包并发布任何返回的具有值的可选。

声明

func compactMap<T>(_ transform: @escaping (Self.Output) -> T?) -> Publishers.CompactMap<Self, T>

返回值

调用提供的闭包的任何非 nil 可选结果。

参数

transform

一个接收一个值并返回一个可选值的闭包。

详述

Combine 的 Publisher/compactMap(_:) 运算符执行类似于 Swift 标准库中的 compactMap(_:) 的函数:Combine 中的 Publisher/compactMap(_:) 运算符删除发布者流中的 nil 元素,并将非 nil 元素重新发布给下游订阅者。

下面的示例使用一系列数字作为基于集合的发布者的来源。 Publisher/compactMap(_:) 运算符使用来自 numbers 发布者的每个元素,尝试使用元素作为键来访问字典。如果示例的字典返回 nil ,由于键不存在,Publisher/compactMap(_:) 会过滤掉 nil(缺失)元素。


let numbers = (0...5)
let romanNumeralDict: [Int : String] =
    [1: "I", 2: "II", 3: "III", 5: "V"]


cancellable = numbers.publisher
    .compactMap { romanNumeralDict[$0] }
    .sink { print("\($0)", terminator: " ") }


// Prints: "I II III V"

可用版本

iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Optional.Publisher compactMap(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。