用法一
实例方法
map(_:)
发布键路径的值。
声明
func map<T>(_ keyPath: KeyPath<Self.Output, T>) -> Publishers.MapKeyPath<Self, T>
返回值
发布 key 路径值的发布者。
参数
keyPath
Output
上的属性的关键路径。
详述
在以下示例中,Publisher/map(_:)-6sm0a
运算符使用 Swift 键路径语法访问由 Just
发布者发布的 DiceRoll
结构的 die
成员。
下游接收器订阅者仅接收此 Int
的值,而不是整个 DiceRoll
。
struct DiceRoll {
let die: Int
}
cancellable = Just(DiceRoll(die:Int.random(in:1...6)))
.map(\.die)
.sink {
print ("Rolled: \($0)")
}
// Prints "Rolled: 3" (or some other random value).
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
用法二
实例方法
map(_:)
使用提供的闭包转换来自上游发布者的所有元素。
声明
func map<T>(_ transform: @escaping (Self.Output) -> T) -> Publishers.Map<Self, T>
返回值
发布者使用提供的闭包将元素从上游发布者映射到然后发布的新元素。
参数
transform
将一个元素作为其参数并返回一个新元素的闭包。
详述
Combine 的 Publisher/map(_:)-99evh
操作符执行的函数类似于 Swift 标准库中的
:它使用闭包来转换从上游发布者接收到的每个元素。您使用map(_:)
Publisher/map(_:)-99evh
从一种元素转换为另一种元素。
以下示例使用数字数组作为基于集合的发布者的源。 Publisher/map(_:)-99evh
运算符使用来自发布者的每个整数,并使用字典将其从阿拉伯数字转换为罗马等价数字,如
。如果 String
Publisher/map(_:)-99evh
的闭包无法查找罗马数字,则返回字符串 (unknown)
。
let numbers = [5, 4, 3, 2, 1, 0]
let romanNumeralDict: [Int : String] =
[1:"I", 2:"II", 3:"III", 4:"IV", 5:"V"]
cancellable = numbers.publisher
.map { romanNumeralDict[$0] ?? "(unknown)" }
.sink { print("\($0)", terminator: " ") }
// Prints: "V IV III II I (unknown)"
如果您的闭包可能引发错误,请改用 Combine 的 Publisher/tryMap(_:)
运算符。
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相关用法
- Swift Optional.Publisher map(_:_:)用法及代码示例
- Swift Optional.Publisher map(_:_:_:)用法及代码示例
- Swift Optional.Publisher mapError(_:)用法及代码示例
- Swift Optional.Publisher max()用法及代码示例
- Swift Optional.Publisher makeConnectable()用法及代码示例
- Swift Optional.Publisher merge(with:_:_:)用法及代码示例
- Swift Optional.Publisher merge(with:_:_:_:_:_:_:)用法及代码示例
- Swift Optional.Publisher measureInterval(using:options:)用法及代码示例
- Swift Optional.Publisher multicast(subject:)用法及代码示例
- Swift Optional.Publisher merge(with:_:_:_:)用法及代码示例
- Swift Optional.Publisher merge(with:_:_:_:_:)用法及代码示例
- Swift Optional.Publisher merge(with:_:)用法及代码示例
- Swift Optional.Publisher min()用法及代码示例
- Swift Optional.Publisher multicast(_:)用法及代码示例
- Swift Optional.Publisher merge(with:_:_:_:_:_:)用法及代码示例
- Swift Optional.Publisher reduce(_:_:)用法及代码示例
- Swift Optional.Publisher tryDrop(while:)用法及代码示例
- Swift Optional.Publisher debounce(for:scheduler:options:)用法及代码示例
- Swift Optional.Publisher breakpoint(receiveSubscription:receiveOutput:receiveCompletion:)用法及代码示例
- Swift Optional.Publisher catch(_:)用法及代码示例
- Swift Optional.Publisher tryAllSatisfy(_:)用法及代码示例
- Swift Optional.Publisher zip(_:_:_:)用法及代码示例
- Swift Optional.Publisher sink(receiveValue:)用法及代码示例
- Swift Optional.Publisher scan(_:_:)用法及代码示例
- Swift Optional.Publisher throttle(for:scheduler:latest:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Optional.Publisher map(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。