Swiftの辞書を繰り返し(ループ)処理する方法について記載します。
目次
辞書を繰り返し(ループ)処理する方法
辞書を繰り返し(ループ)処理するには、for-in・forEach を使用します。
それぞれの違いは、ループ内で continue・break・return の 使用可・不可の違いになります。
構文 | continue | break | return |
---|---|---|---|
for-in | ○ | ○ | × |
forEach | × | × | ○ |
1. for-in
for-in では、continue や break が使えるので
・特定のキーや値の処理はスキップしたい( continue )
・特定のキーや値が出現したらループ処理を終了したい( break )
という用途の繰り返し処理にむいています。
実行例( continue で 特定のキーはスキップして処理 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
let dict = [ "apple": 100 , "orange": 200, "banana":300 ] for elem in dict { let key = elem.key let value = elem.value // キーが orange は出力しない if key == "orange" { continue } print("key : \(key)、value : \(value)") } // key : banana、value : 300 // key : apple、value : 100 |
実行例( break で特定の値が出現したらループ処理を終了 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
let dict = [ "apple": 100 , "orange": 200, "banana":300 ] for elem in dict { let key = elem.key let value = elem.value // 値(300)が出現したらループを終了 if value == 300 { break } print("key : \(key)、value : \(value)") } // key : orange、value : 200 |
2. forEach
forEachでは、return が使えます。
return というと、関数から抜ける というように、forEachループから抜けるように感じますが、動作としては、continue と同じになります。
実行例( return で 特定のキーはスキップして処理 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
let dict = [ "apple": 100 , "orange": 200, "banana":300 ] dict.forEach { elem in let key = elem.key let value = elem.value if key == "orange" { return } print("key : \(key)、value : \(value)") } // key : apple、value : 100 // key : banana、value : 300 |
3. まとめ
for-in、forEach の使い分けとしては
for-in:ループ処理で値のスキップや、途中で処理を抜けたい
forEach:ループ処理の全ての要素に処理を行いたい
というようにすれば分かりやすいと思います。
プロジェクトでコーディング規約を作る場合は、for-in のみ使用する でも良いと思います。