ループと範囲
CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 48/86。
これまで、ループの中で 1...5 のような範囲を使用してきましたが、Swiftでは、これらの範囲の定義方法において、より高い柔軟性が提供されています。さまざまな範囲の型と、逆方向にカウントするための便利なテクニックについて見ていきましょう。
閉範囲演算子 (...) は、両端の値を含みます:
for i in 1...3 {
print(i)
}
// 出力: 1, 2, 3半開範囲演算子 (..<) は上限を含みません。これは、0から始まるインデックスを扱う際に特に便利です:
for i in 0..<3 {
print(i)
}
// 出力: 0, 1, 2時には、逆順でループ処理を行う必要があります。reversed() メソッドを使用すると、範囲内を逆方向に反復処理できます:
for i in (1...3).reversed() {
print(i)
}
// 出力: 3, 2, 1範囲を囲む括弧に注目してください。これらは、範囲に対して reversed() を呼び出す際に必要となります。このテクニックは、カウントダウンや、項目を最後から最初に向かって処理する必要がある場合に最適です。
チャレンジ
簡単n を受け取り、n から 1 までのカウントダウンと、その後に "Go!" を含む文字列を返す関数 countdown を作成してください。
範囲に対して reversed() メソッドを使用して逆方向に反復処理を行い、カウントダウン文字列を構築してください。
ロジック:
1からnまでの範囲を作成し、それを反転させます- 各数値を改行で区切った文字列を構築します
- 最終行に "Go!" を追加します
パラメータ:
n(Int): カウントダウンの開始数値(1以上)
戻り値: 各カウントダウン数値が個別の行にあり、最後に "Go!" で終わる文字列 (String)。形式:
3
2
1
Go!例えば、n が 3 の場合、関数は "3\n2\n1\nGo!" を返します。
チートシート
Swiftはループ用に2つの範囲演算子を提供しています:
閉範囲演算子 (...) は、両端の値を含みます:
for i in 1...3 {
print(i)
}
// 出力: 1, 2, 3半開範囲演算子 (..<) は、上限の値を除外します:
for i in 0..<3 {
print(i)
}
// 出力: 0, 1, 2範囲を逆方向に反復処理するには、reversed() メソッドを使用します:
for i in (1...3).reversed() {
print(i)
}
// 出力: 3, 2, 1注意:reversed() を呼び出す際は、範囲を括弧で囲む必要があります。
自分で試してみよう
func countdown(n: Int) -> String {
// ここにコードを記述してください
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。