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


Swift Optional.Publisher tryMax(by:)用法及代碼示例

實例方法

tryMax(by:)

發布從上遊發布者收到的最大值,使用提供的error-throwing 閉包來排序項目。

聲明

func tryMax(by areInIncreasingOrder: @escaping (Self.Output, Self.Output) throws -> Bool) -> Publishers.TryComparison<Self>

返回值

在上遊發布者完成後,發布從上遊發布者接收到的最大值的發布者。

參數

areInIncreasingOrder

一個拋出閉包,它接收兩個元素並返回true(如果它們按遞增順序排列)。如果此閉包拋出,則發布者以 Subscribers/Completion/failure(_:) 終止。

詳述

使用 Publisher/tryMax(by:) 來確定使用您指定的 error-throwing 閉包從上遊發布者接收到的元素的最大值。

在下麵的示例中,數組發布元素。 Publisher/tryMax(by:) 運算符執行 error-throwing 閉包,當 first 元素為奇數時拋出該閉包,從而終止發布者。


struct IllegalValueError: Error {}


let numbers: [Int]  = [0, 10, 6, 13, 22, 22]
cancellable = numbers.publisher
    .tryMax { first, second -> Bool in
        if (first % 2 != 0) {
            throw IllegalValueError()
        }
        return first > second
    }
    .sink(
        receiveCompletion: { print ("completion: \($0)") },
        receiveValue: { print ("value: \($0)") }
    )


// Prints: completion: failure(IllegalValueError())

在此發布者收到超過 0 個項目的請求後,它會向其上遊發布者請求無限個項目。

可用版本

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

相關用法


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