func makeAsyncIterator () -> Self.AsyncIterator
associatedtype AsyncIterator
protocol AsyncIteratorProtocol
associatedtype Element
Availability
Technology
protocol AsyncSequence
An Async
resembles the Sequence
type — offering a list of values you can step through one at a time — and adds asynchronicity. An Async
may have all, some, or none of its values available when you first use it. Instead, you use await
to receive values as they become available.
あるAsync
は、それの値の全て、いくつか、または0個を、あなたがそれを最初に使う時に利用可能とするかもしれません。その代わりに、あなたはawait
を使って値それらをそれらが利用可能になるにつれて回収します。
As with Sequence
, you typically iterate through an Async
with a for await
-in
loop. However, because the caller must potentially wait for values, you use the await
keyword. The following example shows how to iterate over Counter
, a custom Async
that produces Int
values from 1
up to a how
value:
Sequence
でのように、あなたは概してAsync
をfor await
-in
ループで始めから終わりまで反復処理します。しかしながら、呼び出し側が潜在的に値それらに対して待機することから、あなたはawait
キーワードを使います。以下の例は、どのようにCounter
、あるあつらえのAsync
でInt
値を1
からhow
値に至るまで生み出すもの、のすべてにわたって反復するかを示します:
An Async
doesn’t generate or contain the values; it just defines how you access them. Along with defining the type of values as an associated type called Element
, the Async
defines a make
method. This returns an instance of type Async
. Like the standard Iterator
, the Async
defines a single next()
method to produce elements. The difference is that the Async
defines its next()
method as async
, which requires a caller to wait for the next value with the await
keyword.
Async
は、値それらを生成または含みません;それはただどのようにあなたがそれらにアクセスするかを定義するだけです。値それらの型をElement
と呼ばれる関連型として定義することに加えて、Async
はmake
メソッドを定義します。これは、型Async
のあるインスタンスを返します。標準的なIterator
のように、Async
はただ1つのnext()
メソッドだけを定義して要素それらを生み出します。その違いは、Async
はそれのnext()
メソッドをasync
として定義することです、それは呼び出し側に次の値を待つようにawait
キーワードで要求します。
Async
also defines methods for processing the elements you receive, modeled on the operations provided by the basic Sequence
in the standard library. There are two categories of methods: those that return a single value, and those that return another Async
.
Async
はまた、あなたが受け取る要素を処理するために、標準ライブラリの基本のSequence
によって提供される演算を手本にしてメソッドいくつかを定義します。2つのカテゴリのメソッドがあります:ある単一の値を返すもの、そして別のAsync
を返すもの。
Single-value methods eliminate the need for a for await
-in
loop, and instead let you make a single await
call. For example, the contains(_:)
method returns a Boolean value that indicates if a given value exists in the Async
. Given the Counter
sequence from the previous example, you can test for the existence of a sequence member with a one-line call:
単一値のメソッドそれらは、for await
-in
ループの必要性を排除します、そして代わりにあなたにある単一のawait
呼び出しをさせます。例えば、contains(_:)
メソッドはあるブール値を返します、それはある与えられた値がAsync
の中に存在するかどうかを指し示します。以前の例からのCounter
シーケンスを与えられて、あなたはあるシーケンスメンバーの存在を一行呼び出しで試験できます:
Methods that return another Async
return a type specific to the method’s semantics. For example, the .map(_:)
method returns a Async
(or a Async
, if the closure you provide to the map(_:)
method can throw an error). These returned sequences don’t eagerly await the next member of the sequence, which allows the caller to decide when to start work. Typically, you’ll iterate over these sequences with for await
-in
, like the base Async
you started with. In the following example, the map(_:)
method transforms each Int
received from a Counter
sequence into a String
:
もう1つのAsync
を返すメソッドそれらは、メソッドのもつ意味論に特有のひとつの型を返します。例えば、.map(_:)
メソッドはあるAsync
を返します(またはAsync
を、あなたがmap(_:)
メソッドに提供するクロージャがエラーをスローするならば)。それら返されるシーケンスは、そのシーケンスの次のメンバーを熱心には待ちません、それは呼び出し側にいつ仕事を開始するのか決定するのを許可します。概して、あなたはそれらシーケンスのすべてにわたってfor await
-in
で反復処理をするでしょう、あなたがそれで始めた基本的なAsync
のように。以下の例において、map(_:)
メソッドはCounter
シーケンスから受け取った各Int
をString
へと変換します:
func makeAsyncIterator () -> Self.AsyncIterator
associatedtype AsyncIterator
protocol AsyncIteratorProtocol
associatedtype Element
func contains(Self.Element) -> Bool
Element
conforms to Equatable
.
Element
がEquatable
に準拠する時に利用可能です。
func contains(where: (Self.Element) -> Bool) -> Bool
func allSatisfy ((Self.Element) -> Bool) -> Bool
func first(where: (Self.Element) -> Bool) -> Self.Element?
func min() -> Self.Element?
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func min(by: (Self.Element, Self.Element) -> Bool) -> Self.Element?
func max() -> Self.Element?
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func max(by: (Self.Element, Self.Element) -> Bool) -> Self.Element?
func prefix(Int) -> AsyncPrefixSequence<Self>
struct AsyncPrefixSequence
func prefix(while: (Self.Element) -> Bool) -> AsyncPrefixWhileSequence<Self>
struct AsyncPrefixWhileSequence
func prefix(while: (Self.Element) -> Bool) -> AsyncThrowingPrefixWhileSequence<Self>
struct AsyncThrowingPrefixWhileSequence
func dropFirst (Int) -> AsyncDropFirstSequence<Self>
struct AsyncDropFirstSequence
func drop(while: (Self.Element) -> Bool) -> AsyncDropWhileSequence<Self>
struct AsyncDropWhileSequence
func drop(while: (Self.Element) -> Bool) -> AsyncThrowingDropWhileSequence<Self>
struct AsyncThrowingDropWhileSequence
func filter((Self.Element) -> Bool) -> AsyncFilterSequence<Self>
struct AsyncFilterSequence
func filter((Self.Element) -> Bool) -> AsyncThrowingFilterSequence<Self>
struct AsyncThrowingFilterSequence
func map<Transformed>((Self.Element) -> Transformed) -> AsyncMapSequence<Self, Transformed>
struct AsyncMapSequence
func map<Transformed>((Self.Element) -> Transformed) -> AsyncThrowingMapSequence<Self, Transformed>
struct AsyncThrowingMapSequence
func compactMap <ElementOfResult>((Self.Element) -> ElementOfResult?) -> AsyncCompactMapSequence<Self, ElementOfResult>
struct AsyncCompactMapSequence
func compactMap <ElementOfResult>((Self.Element) -> ElementOfResult?) -> AsyncThrowingCompactMapSequence<Self, ElementOfResult>
struct AsyncThrowingCompactMapSequence
func flatMap <SegmentOfResult>((Self.Element) -> SegmentOfResult) -> AsyncFlatMapSequence<Self, SegmentOfResult>
struct AsyncFlatMapSequence
func flatMap <SegmentOfResult>((Self.Element) -> SegmentOfResult) -> AsyncThrowingFlatMapSequence<Self, SegmentOfResult>
struct AsyncThrowingFlatMapSequence
func reduce<Result>(Result, (Result, Self.Element) -> Result) -> Result
func reduce<Result>(into: Result, (inout Result, Self.Element) -> Void) -> Result
var characters: AsyncCharacterSequence<Self>
Element
is UInt8
.
Element
がUInt8
である時に利用可能です。
struct AsyncCharacterSequence
var unicodeScalars : AsyncUnicodeScalarSequence<Self>
Element
is UInt8
.
Element
がUInt8
である時に利用可能です。
struct AsyncUnicodeScalarSequence
var lines: AsyncLineSequence<Self>
Element
is UInt8
.
Element
がUInt8
である時に利用可能です。
struct AsyncLineSequence
AsyncCharacterSequence
AsyncCompactMapSequence
AsyncDropFirstSequence
AsyncDropWhileSequence
AsyncFilterSequence
AsyncFlatMapSequence
AsyncLineSequence
AsyncMapSequence
AsyncPrefixSequence
AsyncPrefixWhileSequence
AsyncPublisher
AsyncStream
AsyncThrowingCompactMapSequence
AsyncThrowingDropWhileSequence
AsyncThrowingFilterSequence
AsyncThrowingFlatMapSequence
AsyncThrowingMapSequence
AsyncThrowingPrefixWhileSequence
AsyncThrowingPublisher
AsyncThrowingStream
AsyncUnicodeScalarSequence
FileHandle.AsyncBytes
GroupSession.Sessions
GroupSessionMessenger.Messages
HKActivitySummaryQueryDescriptor.Results
HKAnchoredObjectQueryDescriptor.Results
HKElectrocardiogramQueryDescriptor.Results
HKHeartbeatSeriesQueryDescriptor.Results
HKQuantitySeriesSampleQueryDescriptor.Results
HKStatisticsCollectionQueryDescriptor.Results
HKWorkoutRouteQueryDescriptor.Results
MusicSubscription.Updates
NotificationCenter.Notifications
PhotogrammetrySession.Outputs
Product.SubscriptionInfo.Status.Statuses
Storefront.Storefronts
TaskGroup
ThrowingTaskGroup
Transaction.Transactions
URL.AsyncBytes
URLSession.AsyncBytes
struct AsyncStream
struct AsyncThrowingStream