【初心者向け】SwiftとKotlinのfor-in文【便利な使い方も解説】

swift_kotlin_for

SwiftとKotlinのfor-in文についてまとめます。

合わせて覚えると便利な『範囲指定』と『enumerated』もご紹介。

SwiftとKotlinで若干の差はありますが、まとめてサクッと学べる内容です。

SwiftとKotlinのfor-in文

配列やdictionaryから、順番に要素を取り出したり格納したりと、プログラミングで繰り返し処理は必須。

SwiftもKotlinも主に『for-in文』を使って処理をします。

この記事では、そのSwiftのKotlinの『for-in文』と一緒に使える便利な使い方をまとめます。

✔ SwiftとKotlinのfor-in文

  1. Swiftのfor-in文
  2. Kotlinのfor-in文

配列とdictionaryについては、以下の記事でswiftとKotlin同時に学べます。

swift_kotlin_array_append
swift_kotlind_ictionary

Swiftのfor-in文

Swiftのfor-in文について、一緒に『範囲指定』と『enumerated』についてもまとめます。

for-in文と一緒に覚えておくと便利。

以下より解説します。

Swiftのfor-in文の書き方

Swiftの配列から1つずつ要素を取り出す例。


let values = ["りんご", "みかん", "メロン"]
for value in values {
    print(value)
}

<!各要素を取り出す>
りんご
みかん
メロン

この例だとポイントは以下の3つ。これがfor-in文の基本です。

✔ Swiftのfor-in文の3つのポイント

  1. values配列の要素を1つずつvalue変数に格納
  2. value変数は{ }内で使う事ができる
  3. values配列の要素の数だけ{ }内の処理が繰り返される

※もちろん配列名や変数名は任意の名前でOKです。

例では、values配列の要素を1つずつ取り出してvalue変数に格納していますが、変数を使わない場合は以下。

{ }内で変数を使わない場合は『_』でOK。


let values = ["りんご", "みかん", "メロン"]
for _ in values {
    print("変数は使わないよ")
}

<!ただ指定した範囲の回数だけ繰り返す>
変数は使わないよ
変数は使わないよ
変数は使わないよ

Swiftのfor-in文と範囲指定

Swiftのfor-in文は『下限の値…上限の値』で範囲を指定する事ができます。

例えば、0~3まで出力する場合は以下。


for value in 0...3 {
    print("value:\(value)")
}


<!0〜3まで出力される>
value:0
value:1
value:2
value:3

上記の書き方だと上限値になる『3』も含んでますが、含まない場合の書き方は以下。

Swiftのfor-in文で最後の「3」の1つ手前まで出力する例です。


for value in 0..< 3 {
    print("value:\(value)")
}

<!0〜2まで出力される>
value:0
value:1
value:2

Swiftのfor-in文とenumerated

Swiftのfor-in文では『enumerated』を使う事ができます。

これ、何気に実務で結構使ってる気がします。

カウンタの数字と要素を同時に取り出す事ができる

let values = ["りんご", "みかん", "メロン"]
for (index, value) in values.enumerated() {
    print("\(index):\(value)")
}

<!各要素を取り出す>
0:りんご
1:みかん
2:メロン

注意すべき点が1つ。

上記の『(index, value)』は配列のindexではなく0始まりでカウントアップした値を返すという点。

初心者のうちはピンとこないと思いますが…

ようするに『enumerated』の後に、配列に要素を追加したり削除したりしないのが無難ということ。

『そのindexは存在しない』といったエラーになり、アプリがクラッシュするのでよくよく注意を。

Kotlinのfor-in文

Kotlinのfor-in文についてまとめていきます。

こちらもSwift同様、一緒に『範囲指定』と『forEachIndexed』についてもまとめます。

Kotlinのfor-in文の書き方

Kotlinの配列から1つずつ要素を取り出す例。


val values = listOf("りんご", "みかん", "メロン")
for (value in values) {
    println(value)
}

<!各要素を取り出す>
りんご
みかん
メロン

Swiftの配列と同様に、この例だとポイントは以下の3つ。

Kotlinでもこれがfor-in文の基本。

✔ Kotlinのfor-in文の3つのポイント

  1. values配列の要素を1つずつvalue変数に格納
  2. value変数は{ }内で使う事ができる
  3. values配列の要素の数だけ{ }内の処理が繰り返される

※もちろん配列名や変数名は任意の名前でOKです。

Swiftのfor-in文と同じです。

Kotlinのfor-in文と範囲指定

Kotlinのfor-in文でも『下限の値..上限の値』で範囲を指定する事ができます。

Swiftの範囲指定の方法が『下限の値...上限の値』なので似ていますが少し違いますね。

例えば、0~3まで出力する場合は以下。

for-in文で0~3まで出力する

for (value in 0..3) {
    println("value:${value}")
}

<!0〜3まで出力される>
value:0
value:1
value:2
value:3

上記の書き方だと上限値になる『3』も含んでますが、含まない場合の書き方は以下。

Kotlinでは『下限値 until 上限値』と書く事ができます。

Kotlinのfor-in文で「3」の1つ手前まで出力する例。


for (value in 0 until 3) {
    println("value:${value}")
}

<!0〜2まで出力される>
value:0
value:1
value:2

『until』を利用して、配列の要素数だけ繰り返すといった事も可能です。

Kotlinでは、配列の要素数を『配列名.size』で取得する事ができます。


val values = listOf("りんご", "みかん", "メロン")
for (value in 0 until values.size) {
    println(value)
}

<!arrayの範囲以上のindexを指定しないように注意すること>
0
1
2

Kotlinのfor-in文とforEachIndexed

KotlinでもSwiftの『enumerated』同様に、カウンタの数字と要素を同時に取り出す事が可能。

Kotlinでは『forEachIndexed』を使いますが、ラムダ式という書き方をする必要があります。


val values = listOf("りんご", "みかん", "メロン")
values.forEachIndexed { index, value ->
    println("${index}:${value}")
}

<!各要素を取り出す>
0:りんご
1:みかん
2:メロン

Swiftとちょっと違いますよね。

シンプルに言うと、『forEachIndexed』が『values』配列の要素ごとの『index, value』を返してくれるので、{ }の中で受け取ろう。といった感じ。

ラムダ式はKotlinよく使うので、ここで覚えておくと使いこなせたら超便利。

『forEachIndexed』と一緒に書き方も覚えちゃいましょう。

以上です。

いつもご静聴ありがとうございます!

エンジニアの皆さん、お疲れ様です。