文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Range   >   enumerated()
インスタンスメソッド
enumerated()
ペア (n、x) のシーケンスを返します。ここで n はゼロで始まる連続する整数を表し、x はシーケンスの要素を表します。
宣言
func enumerated() -> EnumeratedSequence<Range<Bound>>
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
戻り値
シーケンスを列挙するペアのシーケンス。
議論
この例では、文字列 "Swift" の文字を列挙し、各文字と文字列内のその場所を印刷します。
for (n, c) in "Swift".enumerated() {
print("\(n): '\(c)'")
}
// Prints "0: 'S'"
// Prints "1: 'w'"
// Prints "2: 'i'"
// Prints "3: 'f'"
// Prints "4: 't'"
コレクションを列挙するとき、各ペアの整数部分は列挙のカウンタですが、必ずしもペア値のインデックスではありません。これらのカウンタは、Array や ContiguousArray など、ゼロを基本とした整数インデックス型コレクションのインスタンスでのみインデックスとして使用できます。他のコレクションでは、カウンタが範囲外であるとか、間違った型のインデックスとして使用されている可能性があります。そのインデックスを持つコレクションの要素を反復処理するには、zip(_:_:) 関数を使用して下さい。
この例では、セットのインデックスと要素を反復処理し、5 文字以下の名前のインデックスで構成されるリストを作成します。
let names: Set = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolás"] var shorterIndices: [SetIndex<String>] = [] for (i, name) in zip(names.indices, names) { if name.count <= 5 { shorterIndices.append(i) } }
今や shorterIndices 配列には、names セット内の短い名前のインデックスが保持されているので、それらのインデックスを使用してセット内の要素にアクセスできます。
for i in shorterIndices {
print(names[i])
}
// Prints "Sofia"
// Prints "Mateo"
以下も見よ
Range の要素を繰り返し処理
func forEach((Bound) -> Void)
for-in ループと同じ順序で、シーケンス内の各要素の与えられたクロージャを呼び出します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func makeIterator() -> IndexingIterator<Range<Bound>>
コレクションの要素の反復子 (iterator) を返します。
シーケンス内の要素の数以下の値。非破壊的に計算されます。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
コレクション内の要素の数以下の値。