实例方法
compact
compactMap(_:)
使用每个接收到的元素调用闭包并发布任何返回的具有值的可选。
声明
func compactMap<T>(_ transform: @escaping (Self.Output) -> T?) -> Publishers.CompactMap<Self, T>
返回值
调用提供的闭包的任何非 nil
可选结果。
参数
transform
一个接收一个值并返回一个可选值的闭包。
详述
Combine 的 Publisher/compactMap(_:)
运算符执行类似于 Swift 标准库中的
的函数:Combine 中的 compactMap(_:)
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+
相关用法
- Swift Result.Publisher combineLatest(_:_:)用法及代码示例
- Swift Result.Publisher combineLatest(_:_:_:_:)用法及代码示例
- Swift Result.Publisher combineLatest(_:_:_:)用法及代码示例
- Swift Result.Publisher combineLatest(_:)用法及代码示例
- Swift Result.Publisher contains(_:)用法及代码示例
- Swift Result.Publisher collect(_:options:)用法及代码示例
- Swift Result.Publisher collect(_:)用法及代码示例
- Swift Result.Publisher catch(_:)用法及代码示例
- Swift Result.Publisher zip(_:_:_:)用法及代码示例
- Swift Result.Publisher tryLast(where:)用法及代码示例
- Swift Result.Publisher sink(receiveCompletion:receiveValue:)用法及代码示例
- Swift Result.Publisher merge(with:_:_:)用法及代码示例
- Swift Result.Publisher tryCompactMap(_:)用法及代码示例
- Swift Result.Publisher print(_:to:)用法及代码示例
- Swift Result.Publisher sink(receiveValue:)用法及代码示例
- Swift Result.Publisher eraseToAnyPublisher()用法及代码示例
- Swift Result.Publisher setFailureType(to:)用法及代码示例
- Swift Result.Publisher first(where:)用法及代码示例
- Swift Result.Publisher output(at:)用法及代码示例
- Swift Result.Publisher tryCatch(_:)用法及代码示例
- Swift Result.Publisher dropFirst(_:)用法及代码示例
- Swift Result.Publisher merge(with:_:_:_:_:_:_:)用法及代码示例
- Swift Result.Publisher flatMap(maxPublishers:_:)用法及代码示例
- Swift Result.Publisher map(_:_:_:)用法及代码示例
- Swift Result.Publisher drop(while:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Result.Publisher compactMap(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。