用法一
實例方法
drop(while:)
忽略基本序列中的元素,直到給定的error-throwing 閉包返回 false,之後它通過所有剩餘的元素。
聲明
@preconcurrency func drop(while predicate: @escaping (Self.Element) async throws -> Bool) -> AsyncThrowingDropWhileSequence<Self>
返回值
在提供的閉包返回 false
或引發錯誤之前跳過值的異步序列。
參數
predicate
error-throwing 閉包,將元素作為參數並返回一個布爾值,指示是否從修改後的序列中刪除該元素。
詳述
使用drop(while:)
從異步序列中省略元素,直到接收到的元素滿足您指定的條件。如果您提供的閉包引發錯誤,則序列不會產生任何元素,而是會引發錯誤。
在此示例中,名為 Counter
的異步序列生成從 1
到 10
的 Int
值。傳遞給 drop(while:)
方法的謂詞在遇到偶數時拋出錯誤,否則在接收小於 5
的元素時返回 true
。因為謂詞在從基本序列接收到 2
時拋出,所以這個示例在沒有打印任何內容的情況下拋出。
do {
let stream = Counter(howHigh: 10)
.drop {
if $0 % 2 == 0 {
throw EvenError()
}
return $0 < 5
}
for try await number in stream {
print("\(number) ")
}
} catch {
print ("\(error)")
}
// Prints: EvenError()
在謂詞返回 false
之後,序列不再執行它,從那時起,序列將遍曆其基礎序列中的元素。拋出錯誤的謂詞也永遠不會再次執行。
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
用法二
實例方法
drop(while:)
從基本異步序列中省略元素,直到給定的閉包返回 false,之後它會遍曆所有剩餘的元素。
聲明
@preconcurrency func drop(while predicate: @escaping (Self.Element) async -> Bool) -> AsyncDropWhileSequence<Self>
返回值
一個異步序列,它跳過基本序列中的值,直到提供的閉包返回 false
。
參數
predicate
一個閉包,它接受一個元素作為參數並返回一個布爾值,指示是否從修改後的序列中刪除該元素。
詳述
使用drop(while:)
從異步序列中省略元素,直到接收到的元素滿足您指定的條件。
在此示例中,名為 Counter
的異步序列生成從 1
到 10
的 Int
值。 drop(while:)
方法導致修改後的序列忽略接收到的值,直到遇到可被 3
整除的值:
let stream = Counter(howHigh: 10)
.drop { $0 % 3 != 0 }
for await number in stream {
print("\(number) ", terminator: " ")
}
// prints "3 4 5 6 7 8 9 10"
在謂詞返回 false
之後,序列不再執行它,從那時起,序列按原樣傳遞其底層序列中的元素。
可用版本
iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+
相關用法
- Swift AsyncSequence dropFirst(_:)用法及代碼示例
- Swift AsyncSequence reduce(_:_:)用法及代碼示例
- Swift AsyncSequence first(where:)用法及代碼示例
- Swift AsyncSequence prefix(_:)用法及代碼示例
- Swift AsyncSequence map(_:)用法及代碼示例
- Swift AsyncSequence allSatisfy(_:)用法及代碼示例
- Swift AsyncSequence min()用法及代碼示例
- Swift AsyncSequence contains(_:)用法及代碼示例
- Swift AsyncSequence max()用法及代碼示例
- Swift AsyncSequence filter(_:)用法及代碼示例
- Swift AsyncSequence flatMap(_:)用法及代碼示例
- Swift AsyncSequence prefix(while:)用法及代碼示例
- Swift AsyncSequence max(by:)用法及代碼示例
- Swift AsyncSequence compactMap(_:)用法及代碼示例
- Swift AsyncSequence min(by:)用法及代碼示例
- Swift AsyncSequence contains(where:)用法及代碼示例
- Swift AsyncSequence用法及代碼示例
- Swift AsyncStream用法及代碼示例
- Swift AsyncStream first(where:)用法及代碼示例
- Swift AsyncStream prefix(_:)用法及代碼示例
- Swift AsyncStream drop(while:)用法及代碼示例
- Swift AsyncStream max(by:)用法及代碼示例
- Swift AsyncStream dropFirst(_:)用法及代碼示例
- Swift AsyncStream reduce(_:_:)用法及代碼示例
- Swift AsyncStream prefix(while:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 AsyncSequence drop(while:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。