drop(while:)
Omits elements from the base asynchronous sequence until a given closure returns false, after which it passes through all remaining elements.
- iOS
- 13.0+
- macOS
- 10.15+
- tvOS
- 13.0+
- watchOS
- 6.0+
@preconcurrency func drop(while predicate: @escaping (Self.Element) async -> Bool) -> AsyncDropWhileSequence<Self>
Parameters
- predicate
A closure that takes an element as a parameter and returns a Boolean value indicating whether to drop the element from the modified sequence.
Returns
An asynchronous sequence that skips over values from the base sequence until the provided closure returns false
.
Use drop(while:)
to omit elements from an asynchronous sequence until the element received meets a condition you specify.
In this example, an asynchronous sequence called Counter
produces Int
values from 1
to 10
. The drop(while:)
method causes the modified sequence to ignore received values until it encounters one that is divisible by 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 "
After the predicate returns false
, the sequence never executes it again, and from then on the sequence passes through elements from its underlying sequence as-is.