enumerate メソッド
CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 70/86。
配列を反復処理するとき、要素だけでなく、その位置も知る必要がある場合があります。カウンタ変数を使って手動でインデックスを追跡することもできますが、Swiftはより洗練された解決策を提供しています。それが enumerated() メソッドです。
配列に対して enumerated() を呼び出すと、各タプルにインデックスと要素が含まれるタプルのシーケンスを返します:
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: Blue(index, color) を使って、ループ内で各タプルを直接分解していることに注目してください。これにより、余計なコードを書くことなく両方の値にアクセスできます。
これは、番号付きリストを表示したり、要素の位置に依存する操作を実行したりする必要がある場合に特に便利です。
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// Task 1: Wake up
// Task 2: Exercise
// Task 3: Eat breakfastenumerated() メソッドを使用すると、手動で個別のカウンタ変数を管理するよりも、コードをクリーンで読みやすく保つことができます。
チャレンジ
簡単items を受け取り、各項目とその位置番号を表示するフォーマット済み文字列を返す関数 formatWithPositions を作成してください。
enumerated() メソッドを使用して配列を反復処理し、各項目の前に 1 から始まる位置番号が付いた文字列を構築します。
ロジック:
enumerated()を使用して配列を反復処理します- 各要素について、
"position. item"の形式(1 から始まる番号を使用)で文字列を作成します - すべてのフォーマット済み文字列を改行文字 (
\n) で結合します
パラメータ:
items([String]): フォーマットする文字列の配列
戻り値: 各項目がそれぞれの行にあり、位置番号がプレフィックスとして付いた単一の文字列 (String)。形式: "1. item1\n2. item2\n3. item3"
例: items が ["Apple", "Banana", "Cherry"] の場合、関数は以下を返す必要があります:
"1. Apple\n2. Banana\n3. Cherry"注意: 配列が空の場合は、空の文字列 "" を返してください。
チートシート
enumerated() メソッドは、配列のインデックスと要素の両方を含むタプルのシーケンスを返します。
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: Blue各タプルは (index, element) 構文を使用してループ内で直接分解され、位置と値の両方へのアクセスを提供します。
これは、0から始まるインデックスに1を加えることで、番号付きリストを作成するのに便利です。
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// Task 1: Wake up
// Task 2: Exercise
// Task 3: Eat breakfast自分で試してみよう
func formatWithPositions(items: [String]) -> String {
// ここにコードを書いてください
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。