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


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(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。