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


Swift AsyncSequence filter(_:)用法及代码示例


用法一

实例方法

filter(_:)

创建一个异步序列,其中按顺序包含满足给定 error-throwing 谓词的基本序列元素。

声明

@preconcurrency func filter(_ isIncluded: @escaping (Self.Element) async throws -> Bool) -> AsyncThrowingFilterSequence<Self>

返回值

按顺序包含满足给定谓词的基本序列元素的异步序列。如果谓词抛出错误,则序列仅包含在错误之前产生的值。

参数

isIncluded

一个 error-throwing 闭包,它将异步序列的元素作为其参数,并返回一个布尔值,指示是否在过滤后的序列中包含该元素。

详述

在此示例中,名为 Counter 的异步序列生成从 110Int 值。 filter(_:) 方法为偶数返回 true,为奇数值返回 false,从而过滤掉奇数值,但对于可被 5 整除的值也会引发错误:


do {
    let stream =  Counter(howHigh: 10)
        .filter {
            if $0 % 5 == 0 {
                throw MyError()
            }
            return $0 % 2 == 0
        }
    for try await number in stream {
        print("\(number) ", terminator: " ")
    }
} catch {
    print("Error: \(error)")
}
// Prints: 2  4  Error: MyError()

可用版本

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

用法二

实例方法

filter(_:)

创建一个异步序列,该序列按顺序包含满足给定谓词的基本序列元素。

声明

@preconcurrency func filter(_ isIncluded: @escaping (Self.Element) async -> Bool) -> AsyncFilterSequence<Self>

返回值

按顺序包含满足给定谓词的基本序列元素的异步序列。

参数

isIncluded

一个闭包,它将异步序列的元素作为其参数并返回一个布尔值,该值指示是否在过滤后的序列中包含该元素。

详述

在此示例中,名为 Counter 的异步序列生成从 110Int 值。 filter(_:) 方法为偶数返回true,为奇数返回false,从而过滤掉奇数:


let stream = Counter(howHigh: 10)
    .filter { $0 % 2 == 0 }
for await number in stream {
    print("\(number) ", terminator: " ")
}
// Prints: 2  4  6  8  10

可用版本

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

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AsyncSequence filter(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。