當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift Result.Publisher map(_:)用法及代碼示例


用法一

實例方法

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+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Result.Publisher map(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。