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


Swift AsyncCompactMapSequence map(_:)用法及代码示例


用法一

实例方法

map(_:)

创建一个异步序列,将给定的error-throwing闭包映射到异步序列的元素上。

声明

@preconcurrency func map<Transformed>(_ transform: @escaping (Self.Element) async throws -> Transformed) -> AsyncThrowingMapSequence<Self, Transformed>

返回值

一个异步序列,按顺序包含由transform 闭包生成的元素。

参数

transform

映射闭包。 transform 接受此序列的元素作为其参数,并返回相同或不同类型的转换值。 transform 也可能引发错误,从而结束转换后的序列。

详述

使用 map(_:) 方法转换从基本异步序列接收到的每个元素。通常,您使用它从一种类型的元素转换为另一种类型的元素。

在此示例中,名为 Counter 的异步序列生成从 15Int 值。提供给map(_:) 方法的闭包接受每个Int 并从romanNumeralDict 字典中查找相应的String。这意味着外部for await in 循环迭代String 实例,而不是Counter 产生的底层Int 值。此外,字典不提供 4 的键,并且闭包对于它无法查找的任何键都会引发错误,因此从 Counter 接收此值会以错误结束修改后的序列。


let romanNumeralDict: [Int : String] =
    [1: "I", 2: "II", 3: "III", 5: "V"]


do {
    let stream = Counter(howHigh: 5)
        .map { (value) throws -> String in
            guard let roman = romanNumeralDict[value] else {
                throw MyError()
            }
            return roman
        }
    for try await numeral in stream {
        print("\(numeral) ", terminator: " ")
    }
} catch {
    print ("Error: \(error)")
}
// Prints: I  II  III  Error: MyError()

可用版本

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

用法二

实例方法

map(_:)

创建一个异步序列,将给定的闭包映射到异步序列的元素上。

声明

@preconcurrency func map<Transformed>(_ transform: @escaping (Self.Element) async -> Transformed) -> AsyncMapSequence<Self, Transformed>

返回值

一个异步序列,按顺序包含由transform 闭包生成的元素。

参数

transform

映射闭包。 transform 接受此序列的元素作为其参数,并返回相同或不同类型的转换值。

详述

使用 map(_:) 方法转换从基本异步序列接收到的每个元素。通常,您使用它从一种类型的元素转换为另一种类型的元素。

在此示例中,名为 Counter 的异步序列生成从 15Int 值。提供给map(_:) 方法的闭包接受每个Int 并从romanNumeralDict 字典中查找相应的String。这意味着外部 for await in 循环迭代 String 实例,而不是 Counter 产生的底层 Int 值:


let romanNumeralDict: [Int: String] =
    [1: "I", 2: "II", 3: "III", 5: "V"]


let stream = Counter(howHigh: 5)
    .map { romanNumeralDict[$0] ?? "(unknown)" }
for await numeral in stream {
    print("\(numeral) ", terminator: " ")
}
// Prints: I  II  III  (unknown)  V

可用版本

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

相关用法


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