用法一
map(_:)
声明
@preconcurrency func map<Transformed>(_ transform: @escaping (Self.Element) async -> Transformed) -> AsyncMapSequence<Self, Transformed>
返回值
一个异步序列,按顺序包含由transform
闭包生成的元素。
参数
transform
映射闭包。
transform
接受此序列的元素作为其参数,并返回相同或不同类型的转换值。
详述
使用 map(_:)
方法转换从基本异步序列接收到的每个元素。通常,您使用它从一种类型的元素转换为另一种类型的元素。
在此示例中,名为 Counter
的异步序列生成从 1
到 5
的 Int
值。提供给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
可用版本
用法二
map(_:)
声明
@preconcurrency func map<Transformed>(_ transform: @escaping (Self.Element) async throws -> Transformed) -> AsyncThrowingMapSequence<Self, Transformed>
返回值
一个异步序列,按顺序包含由transform
闭包生成的元素。
参数
transform
映射闭包。
transform
接受此序列的元素作为其参数,并返回相同或不同类型的转换值。transform
也可能引发错误,从而结束转换后的序列。
详述
使用 map(_:)
方法转换从基本异步序列接收到的每个元素。通常,您使用它从一种类型的元素转换为另一种类型的元素。
在此示例中,名为 Counter
的异步序列生成从 1
到 5
的 Int
值。提供给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()
可用版本
相关用法
- Swift AsyncSequence max()用法及代码示例
- Swift AsyncSequence max(by:)用法及代码示例
- Swift AsyncSequence min()用法及代码示例
- Swift AsyncSequence min(by:)用法及代码示例
- Swift AsyncSequence dropFirst(_:)用法及代码示例
- Swift AsyncSequence reduce(_:_:)用法及代码示例
- Swift AsyncSequence first(where:)用法及代码示例
- Swift AsyncSequence prefix(_:)用法及代码示例
- Swift AsyncSequence allSatisfy(_:)用法及代码示例
- Swift AsyncSequence drop(while:)用法及代码示例
- Swift AsyncSequence contains(_:)用法及代码示例
- Swift AsyncSequence filter(_:)用法及代码示例
- Swift AsyncSequence flatMap(_:)用法及代码示例
- Swift AsyncSequence prefix(while:)用法及代码示例
- Swift AsyncSequence compactMap(_:)用法及代码示例
- Swift AsyncSequence contains(where:)用法及代码示例
- Swift AsyncSequence用法及代码示例
- Swift AsyncStream用法及代码示例
- Swift AsyncStream first(where:)用法及代码示例
- Swift AsyncStream prefix(_:)用法及代码示例
- Swift AsyncStream drop(while:)用法及代码示例
- Swift AsyncStream max(by:)用法及代码示例
- Swift AsyncStream dropFirst(_:)用法及代码示例
- Swift AsyncStream reduce(_:_:)用法及代码示例
- Swift AsyncStream prefix(while:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AsyncSequence map(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。