用法一
實例方法
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+
用法二
實例方法
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+
相關用法
- Swift Result.Publisher map(_:_:_:)用法及代碼示例
- Swift Result.Publisher map(_:_:)用法及代碼示例
- Swift Result.Publisher mapError(_:)用法及代碼示例
- Swift Result.Publisher max()用法及代碼示例
- Swift Result.Publisher makeConnectable()用法及代碼示例
- Swift Result.Publisher merge(with:_:_:)用法及代碼示例
- Swift Result.Publisher merge(with:_:_:_:_:_:_:)用法及代碼示例
- Swift Result.Publisher merge(with:_:)用法及代碼示例
- Swift Result.Publisher min()用法及代碼示例
- Swift Result.Publisher multicast(_:)用法及代碼示例
- Swift Result.Publisher merge(with:_:_:_:_:_:)用法及代碼示例
- Swift Result.Publisher multicast(subject:)用法及代碼示例
- Swift Result.Publisher merge(with:_:_:_:_:)用法及代碼示例
- Swift Result.Publisher merge(with:_:_:_:)用法及代碼示例
- Swift Result.Publisher measureInterval(using:options:)用法及代碼示例
- Swift Result.Publisher zip(_:_:_:)用法及代碼示例
- Swift Result.Publisher tryLast(where:)用法及代碼示例
- Swift Result.Publisher sink(receiveCompletion:receiveValue:)用法及代碼示例
- 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:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Result.Publisher map(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。