Swiftのfor in 文は繰り返しを行う処理で、アプリ開発で頻繁に使うものです。
Swiftで他にも繰り返しを行うものに、whileやrepeat-whileもあります。
本記事では、Swiftにおけるfor in文の使い方を簡単に紹介していきます。
環境: Swift 4.2
目次
for inの書き方①配列を繰り返す
1 2 3 4 5 6 7 |
var numbers = [1,2,3,4,5] for num in numbers { print(num) } //結果: 1 2 3 4 5 6 |
最も基本的な使い方だと思います。配列の要素を順番に取り出して、printで要素を出力しています。
for inの書き方②辞書を繰り返す
1 2 3 4 5 6 7 |
var person: Dictionary = ["name": "Taro", "age": 20] as [String : Any] for num in person { print(num) } //結果: (key: "age", value: 20),(key: "name", value: "Taro") |
Swiftの辞書(dictionary)もfor in を使って繰り返すことができます。辞書はキー(key)とバリュー(value)のセットでデータを保管するものです。
上ではキーとバリューを繰り返して、printで出力しています。
辞書のキーだけ繰り返すこともfor in文はできます。
1 2 3 4 5 6 7 |
var person: Dictionary = ["name": "Taro", "age": 20] as [String : Any] for num in person.keys { print(num) } //結果: name age |
結果はキーの”name”と”age” が出力されています。
また辞書のバリューだけ繰り返すこともできます。
1 2 3 4 5 6 7 |
var person: Dictionary = ["name": "Taro", "age": 20] as [String : Any] for num in person.values { print(num) } //結果: 20 Taro |
辞書personのバリューの”Taro”と年齢の20が出力されています。
for inの書き方③範囲を指定して繰り返す
a..<b を使う書き方
1 2 3 4 5 |
for num in 1..<10 { print(num) } //結果: 1 2 3 4 5 6 7 8 9 |
a..<bは、aからb未満(bより小さい)の数だけ繰り返す処理です。なので結果は1から9までが表示されています。
a…b を使う書き方
1 2 3 4 5 |
for number in 1...10 { print(number) } //結果: 1 2 3 4 5 6 7 8 9 10 |
a…bはaからbまでの数を繰り返す処理で、上のa..<bとの違いは、
bの数字も含むことです。なので、出力結果は1から10まで含まれています。
for inの書き方④配列や辞書の数を繰り返す
1 2 3 4 5 6 |
var numbers = [1,2,3,4,5] for num in 1..<numbers.count { print(num) } //結果: 1 2 3 4 |
配列numbersの要素の数は5個です。for in 文でnumbersの数だけ繰り返しており、a..<bの書き方なので、4個繰り返されています。
1 2 3 4 5 6 |
var numbers = [1,2,3,4,5] for num in 1...numbers.count { print(num) } //結果: 1 2 3 4 5 |
これも要素数5個の配列numbersを繰り返しており、
a…bの書き方なので、5個繰り返されています。
辞書も同じです。
1 2 3 4 5 6 7 |
var person: Dictionary = ["name": "Taro", "age": 20] as [String : Any] for num in 1..<person.count { print(num) } //結果: 1 |
1 2 3 4 5 6 7 |
var person: Dictionary = ["name": "Taro", "age": 20] as [String : Any] for num in 1...person.count { print(num) } //結果: 1 2 |
for inの書き方⑤ whereを使う
Swiftのfor in文でwhereを使うと、条件に合うものだけ繰り返してくれます。
1 2 3 4 5 6 7 |
let numbers = [1,2,3,4,5,6] for num in numbers where num % 2 == 0 { print(num) } //結果: 2 4 6 |
where num % 2 == 0 は numbersから取り出した要素が偶数である場合(2で割った余りが0)ということです。
まとめ
Swiftのfor in文は辞書や配列の繰り返しに使える。また取り出し方は様々な方法があるので、その都度取り出し方を考えると良さそう。
参考:
https://www.hackingwithswift.com/example-code/language/how-to-filter-a-loop-using-a-where-clause
https://learnappmaking.com/loops-swift-how-to/