SwiftとKotlinのfor-in文についてまとめます。
合わせて覚えると便利な『範囲指定』と『enumerated』もご紹介。
SwiftとKotlinで若干の差はありますが、まとめてサクッと学べる内容です。
✔ もくじ
SwiftとKotlinのfor-in文
配列やdictionaryから、順番に要素を取り出したり格納したりと、プログラミングで繰り返し処理は必須。
SwiftもKotlinも主に『for-in文』を使って処理をします。
この記事では、そのSwiftのKotlinの『for-in文』と一緒に使える便利な使い方をまとめます。
✔ SwiftとKotlinのfor-in文
配列とdictionaryについては、以下の記事でswiftとKotlin同時に学べます。
Swiftのfor-in文
Swiftのfor-in文について、一緒に『範囲指定』と『enumerated』についてもまとめます。
for-in文と一緒に覚えておくと便利。
✔ Swiftのfor-in文
以下より解説します。
Swiftのfor-in文の書き方
Swiftの配列から1つずつ要素を取り出す例。
let values = ["りんご", "みかん", "メロン"]
for value in values {
print(value)
}
<!各要素を取り出す>
りんご
みかん
メロン
この例だとポイントは以下の3つ。これがfor-in文の基本です。
✔ Swiftのfor-in文の3つのポイント
- values配列の要素を1つずつvalue変数に格納
- value変数は{ }内で使う事ができる
- 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のfor-in文の書き方
Kotlinの配列から1つずつ要素を取り出す例。
val values = listOf("りんご", "みかん", "メロン")
for (value in values) {
println(value)
}
<!各要素を取り出す>
りんご
みかん
メロン
Swiftの配列と同様に、この例だとポイントは以下の3つ。
Kotlinでもこれがfor-in文の基本。
✔ Kotlinのfor-in文の3つのポイント
- values配列の要素を1つずつvalue変数に格納
- value変数は{ }内で使う事ができる
- 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』と一緒に書き方も覚えちゃいましょう。
以上です。
いつもご静聴ありがとうございます!
エンジニアの皆さん、お疲れ様です。