Generic Structure

IndexingIterator

A type that iterates over a collection using its indices. あるコレクション全体に渡ってそれのインデックスを使って繰り返し処理する型。

Declaration 宣言

@frozen struct IndexingIterator<Elements> where Elements : Collection

Overview 概要

The IndexingIterator type is the default iterator for any collection that doesn’t declare its own. It acts as an iterator by using a collection’s indices to step over each value in the collection. Most collections in the standard library use IndexingIterator as their iterator. IndexingIterator型は、それ独自のものを宣言しないあらゆるコレクションに対する省略時のイテレータです。それは、コレクションのインデックスを使ってコレクションの中の各値のすべてを渡っていくあるイテレータとしての役割を果たします。標準ライブラリの中のほとんどのコレクションは、IndexingIteratorをそれらのイテレータとして使います。

By default, any custom collection type you create will inherit a makeIterator() method that returns an IndexingIterator instance, making it unnecessary to declare your own. When creating a custom collection type, add the minimal requirements of the Collection protocol: starting and ending indices and a subscript for accessing elements. With those elements defined, the inherited makeIterator() method satisfies the requirements of the Sequence protocol. 初期状態で、あなたが作成するあらゆるあつらえのコレクション型は、IndexingIteratorインスタンスを返すmakeIterator()メソッドを継承していて、それをあなた自身で宣言する必要がないようにしています。あつらえのコレクション型を作成する場合、Collectionプロトコルの最小限の要件:始まりと終わりのインデックスおよび要素にアクセスするための添え字、を加えてください。定義されるそれらの要素とともに、継承されるmakeIterator()メソッドがSequenceプロトコルの要件を満たします。

Here’s an example of a type that declares the minimal requirements for a collection. The CollectionOfTwo structure is a fixed-size collection that always holds two elements of a specific type. ここにある型の例があります、それはあるコレクションのための最小限の要件を宣言します。このCollectionOfTwo構造体は固定サイズのコレクションです、それは常にある決まった型の2つの要素を保持します。


struct CollectionOfTwo<Element>: Collection {
    let elements: (Element, Element)


    init(_ first: Element, _ second: Element) {
        self.elements = (first, second)
    }


    var startIndex: Int { return 0 }
    var endIndex: Int   { return 2 }


    subscript(index: Int) -> Element {
        switch index {
        case 0: return elements.0
        case 1: return elements.1
        default: fatalError("Index out of bounds.")
        }
    }
    
    func index(after i: Int) -> Int {
        precondition(i < endIndex, "Can't advance beyond endIndex")
        return i + 1
    }
}

Because CollectionOfTwo doesn’t define its own makeIterator() method or Iterator associated type, it uses the default iterator type, IndexingIterator. This example shows how a CollectionOfTwo instance can be created holding the values of a point, and then iterated over using a for-in loop. CollectionOfTwoは独自のmakeIterator()メソッドまたはIterator関連型を定義しないことから、それは省略時のイテレータ型、IndexingIteratorを使います。この例は、どのようにCollectionOfTwoインスタンスがある地点の値を保持して作成されるか、そしてそれからfor-inループを使って全体にわたって繰り返されるかを示します。


let point = CollectionOfTwo(15.0, 20.0)
for element in point {
    print(element)
}
// Prints "15.0"
// Prints "20.0"

Topics 話題

Type Aliases 型エイリアス

Instance Properties 様々なインスタンスプロパティ

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

Relationships 関係

Conforms To 次に準拠

See Also 参照

Indices and Iterators インデックスとイテレータ