文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >  sequence(state:next:)
汎用関数
sequence(state:next:)
next の遅延したアプリケーションの繰り返しから、変異可能な state に形成されたシーケンスを返します。
宣言
func sequence<T, State>(state: State, next: @escaping (inout State) -> T?) -> UnfoldSequence<T, State>
パラメータ
state | クロージャに渡される初期状態。 |
next | inout 状態を受け取り、シーケンスの次の要素を返すクロージャ。 |
戻り値
next からそれぞれの連続する値をもたらすシーケンス。
議論
シーケンスの要素は、変更可能な状態で next を呼び出すことによって取得されます。同じ状態が next のすべての呼び出しに渡されるため、後続の呼び出しで以前の呼び出しによって作成された変異がすべて表示されます。next は、nil を返すとシーケンスが終了します。next が nil を決して返さない場合、シーケンスは無限になります。
この関数は、クロージャをラップする AnyIterator の多くのインスタンスを置き換えて使用できます。
例えば:
// Interleave two sequences that yield the same element type
sequence(state: (false, seq1.makeIterator(), seq2.makeIterator()), next: { iters in
iters.0 = !iters.0
return iters.0 ? iters.1.next() : iters.2.next()
})
以下も見よ
動的シーケンス
func sequence<T>(first: T, next: (T) -> T?)
next の first と遅延したアプリケーションの繰り返しから形成されたシーケンスを返します。