用法一
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 AsyncStream max(by:)用法及代碼示例
- Swift AsyncStream max()用法及代碼示例
- Swift AsyncStream min()用法及代碼示例
- Swift AsyncStream min(by:)用法及代碼示例
- Swift AsyncStream first(where:)用法及代碼示例
- Swift AsyncStream prefix(_:)用法及代碼示例
- Swift AsyncStream drop(while:)用法及代碼示例
- Swift AsyncStream dropFirst(_:)用法及代碼示例
- Swift AsyncStream reduce(_:_:)用法及代碼示例
- Swift AsyncStream prefix(while:)用法及代碼示例
- Swift AsyncStream allSatisfy(_:)用法及代碼示例
- Swift AsyncStream contains(_:)用法及代碼示例
- Swift AsyncStream contains(where:)用法及代碼示例
- Swift AsyncStream flatMap(_:)用法及代碼示例
- Swift AsyncStream init(_:bufferingPolicy:_:)用法及代碼示例
- Swift AsyncStream init(unfolding:onCancel:)用法及代碼示例
- Swift AsyncStream filter(_:)用法及代碼示例
- Swift AsyncStream compactMap(_:)用法及代碼示例
- Swift AsyncStream用法及代碼示例
- Swift AsyncSequence dropFirst(_:)用法及代碼示例
- Swift AsyncSequence reduce(_:_:)用法及代碼示例
- Swift AsyncSequence first(where:)用法及代碼示例
- Swift AsyncSequence prefix(_:)用法及代碼示例
- Swift AsyncSequence map(_:)用法及代碼示例
- Swift AsyncSequence allSatisfy(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 AsyncStream map(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。