当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Optional.Publisher tryMin(by:)用法及代码示例


实例方法

tryMin(by:)

发布从上游发布者收到的最小值,使用提供的error-throwing 闭包来排序项目。

声明

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

返回值

在上游发布者完成后发布从上游发布者收到的最小值的发布者。

参数

areInIncreasingOrder

一个抛出闭包,它接收两个元素并返回true(如果它们按递增顺序排列)。如果此闭包抛出,则发布者以 Subscribers/Completion/failure(_:) 终止。

详述

使用 Publisher/tryMin(by:) 确定使用您指定的 error-throwing 闭包从上游发布者接收的元素的最小值。

在下面的示例中,数组发布元素。 Publisher/tryMin(by:) 运算符执行 error-throwing 闭包,当 first 元素为奇数时抛出该闭包,从而终止发布者。


struct IllegalValueError: Error {}


let numbers: [Int]  = [0, 10, 6, 13, 22, 22]
numbers.publisher
    .tryMin { 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 tryMin(by:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。