Generic Function

sequence(first:next:)

Returns a sequence formed from first and repeated lazy applications of next. firstからそして繰り返しnextを遅延適用して形成されたシーケンスを返します。

Declaration 宣言

func sequence<T>(first: T, next: @escaping (T) -> T?) -> UnfoldFirstSequence<T>

Parameters パラメータ

first

The first element to be returned from the sequence. このシーケンスから返されることになる最初の要素。

next

A closure that accepts the previous sequence element and returns the next element. あるクロージャ、それは前のシーケンス要素を受け取り、次の要素を返します。

Return Value 戻り値

A sequence that starts with first and continues with every value returned by passing the previous element to next. あるシーケンス、それはfirstで始まり、そして前の要素をnextに渡すことによって返される値どれもが続きます。

Discussion 解説

The first element in the sequence is always first, and each successive element is the result of invoking next with the previous element. The sequence ends when next returns nil. If next never returns nil, the sequence is infinite. このシーケンスでの最初の要素は常にfirstです、そして続く要素それぞれはnextを前の要素とともに発動することの結果です。このシーケンスは、nextnilを返す時に終わります。nextが決してnilを返さないならば、 このシーケンスは果てがありません。

This function can be used to replace many cases that were previously handled using C-style for loops. この関数は、C形式のforループを使用して前もって取り扱われたケースの多くを置き換えるのに使われることができます。

Example: 例:


// Walk the elements of a tree from a node up to the root
for node in sequence(first: leaf, next: { $0.parent }) {
  // node is leaf, then leaf.parent, then leaf.parent.parent, etc.
}


// Iterate over all powers of two (ignoring overflow)
for value in sequence(first: 1, next: { $0 * 2 }) {
  // value is 1, then 2, then 4, then 8, etc.
}

See Also 参照

Dynamic Sequences 動的なシーケンス