associatedtype Element
Overview 概要
The Async
defines the type returned by the make
method of the Async
protocol. In short, the iterator is what produces the asynchronous sequence’s values. The protocol defines a single asynchronous method, next()
, which either produces the next element of the sequence, or returns nil
to signal the end of the sequence.
Async
は、Async
プロトコルのmake
メソッドによって返される型を定義します。要約すれば、そのイテレータは、非同期シーケンスのもつ値それらを取り出すものです。プロトコルは、ただ1つの非同期メソッドnext()
を定義します、それはシーケンスの次の要素を取り出すか、またはnil
を返してシーケンスの終わりを合図するかのどちらかです。
To implement your own Async
, implement a wrapped type that conforms to Async
. The following example shows a Counter
type that uses an inner iterator to monotonically generate Int
values until reaching a how
value. While this example isn’t itself asychronous, it shows the shape of a custom sequence and iterator, and how to use it as if it were asynchronous:
あなた独自のAsync
を実装するには、Async
に準拠するあるラップ型を実装してください。以下の例は、あるCounter
型を示します、それはある内部イテレータを使ってInt
値を、how
値に到達するまで単調に生成します。この例はそれ自体は非同期でない一方で、それはあるあつらえのシーケンスとイテレータの輪郭、そしてまるでそれが非同期だったかのようにそれを使う方法を示します:
At the call site, this looks like: 呼び出し場所で、これは次のように見えます:
End of Iteration 反復の終わり
The iterator returns nil
to indicate the end of the sequence. After returning nil
(or throwing an error) from next()
, the iterator enters a terminal state, and all future calls to next()
must return nil
.
イテレータ(反復子)は、nil
を返すことでシーケンスの終わりを指し示します。next()
からnil
を返す(またはエラーをスローする)後、イテレータはある終端状態に入ります、そしてnext()
への全ての未来の呼び出しは、nil
を返さなければなりません。
Cancellation 取り消し
Types conforming to Async
should use the cancellation primitives provided by Swift’s Task
API. The iterator can choose how to handle and respond to cancellation, including:
Async
に準拠する型は、SwiftのもつTask
APIによって提供される取り消し原始関数を使うべきです。イテレータは、どのように取り消しを処理してそして応答するかを選択できます、それは次を含みます:
Checking the
is
value of the currentCancelled Task
insidenext()
and returningnil
to terminate the sequence.next()
の内部の現在のTask
のis
値を調べるそしてCancelled nil
を返してシーケンスを終端する。Calling
check
on theCancellation() Task
, which throws aCancellation
.Error check
をCancellation() Task
上で呼び出す、それはCancellation
をスローします。Error Implementing
next()
with awith
invocation to immediately react to cancellation.Task Cancellation Handler(handler: operation:) next()
をあるwith
発動をつかって実装して、直接に取り消しに反応を示す。Task Cancellation Handler(handler: operation:)
If the iterator needs to clean up on cancellation, it can do so after checking for cancellation as described above, or in deinit
if it’s a reference type.
イテレータが取り消しに関して片付けを必要とするならば、それはそうすることが可能です、上で記述されるように取り消しを確認した後に、またはそれが参照型であるならばdeinit
において。