Instance Method インスタンスメソッド

prefix(while:)

Returns an asynchronous sequence, containing the initial, consecutive elements of the base sequence that satisfy the given error-throwing predicate. ある非同期シーケンスを返します、基底シーケンスの冒頭の、連続する要素いくつかを含んでいます、それらは与えられたエラースロー述部を満たすものです。

Declaration 宣言

func prefix(while predicate: @escaping (Self.Element) async throws -> Bool) rethrows -> AsyncThrowingPrefixWhileSequence<Self>

Parameters パラメータ

predicate

A error-throwing closure that takes an element of the asynchronous sequence as its argument and returns a Boolean value that indicates whether to include the element in the modified sequence. あるエラースロークロージャ、それは非同期シーケンスの1つの要素をそれの引数として取り、その要素をこの修正されたシーケンスに含むことになるかどうかを指し示すブール値を返します。

Return Value 戻り値

An asynchronous sequence that contains, in order, the elements of the base sequence that satisfy the given predicate. If the predicate throws an error, the sequence contains only values produced prior to the error. ある非同期シーケンス、それは基底シーケンスの要素それらを、順番に含みます、それらは与えられた述部を満たすものです。述部がエラーをスローするならば、シーケンスはエラーより前に生み出された値のみを含みます。

Discussion 解説

Use prefix(while:) to produce values while elements from the base sequence meet a condition you specify. The modified sequence ends when the predicate closure returns false or throws an error. prefix(while:)を使うことで、基底シーケンスからの要素があなたが指定する条件に合う間ずっと値を生み出してください。修正されたシーケンスは、述部クロージャがfalseを返すかエラーをスローする時に終わります。

In this example, an asynchronous sequence called Counter produces Int values from 1 to 10. The prefix(_:) method causes the modified sequence to pass through values less than 8, but throws an error when it receives a value that’s divisible by 5: この例において、Counterと呼ばれる非同期シーケンスはInt値を1から10まで生み出します。prefix(_:)メソッドは、修正されたシーケンスが8より少ない値それらを通過させる、しかしそれが5で割り切れる値を受け取る時はエラーをスローするようにします:


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

See Also 参照

Selecting Elements 要素の選択