きっかけ
配列、つかってますか?
こと業務システムにおいては使う機会ってめったにないですよね。
ふと思ったわけですKotlinで配列ってどう書くんだっけ…
Kotlinで配列
まず心のふるさとJavaだとこう。
なんとなくint型の箱(ものを投げないでください)が3つできてそれに番号が振られているイメージがして、直感的ですね。
public static void main(String[] args) { int[] myArray = new int[3]; myArray[0] = 10; myArray[1] = 20; myArray[2] = 30; for (int number : myArray) { System.out.println(number); } } // 実行結果 // 10 // 20 // 30
Kotlinだとこう。
さっきのJavaのコードを張り付けてIntelliJ IDEAさんに変換してもらいましょう。
val myArray = IntArray(3) myArray[0] = 10 myArray[1] = 20 myArray[2] = 30 myArray.forEach { println(it) } // 実行結果 // 10 // 20 // 30
変数の宣言方法が変わりましたね。
IntArray(3)
Javaの方の違和感がちょっと薄れたかなという感じ。
クラスっぽくないのにnewしてんじゃんこれみたいな。
Kotlinの多次元配列
はい、さて本題。
多次元配列はどう書くのですかね。
IntArray(2)(3)
うん、まぁ違うよね。
困ったときはJavaで書いてみましょう。
public static void main(String[] args) { int[][] myArray = new int[2][3]; myArray[0][0] = 10; myArray[0][1] = 20; myArray[0][2] = 30; myArray[1][0] = 15; myArray[1][1] = 25; myArray[1][2] = 35; for (int[] numberArray : myArray) { for (int number : numberArray) { System.out.println(number); } } }
ちょっと複雑になりましたが、これも箱のイメージ(ものを!ものを投げないでください!)に反するものではないので理解しやすいですね。
よし、これをKotlinファイルにコピペしてみましょう。
fun main() { val myArray = Array(2) { IntArray(3) } myArray[0][0] = 10 myArray[0][1] = 20 myArray[0][2] = 30 myArray[1][0] = 15 myArray[1][1] = 25 myArray[1][2] = 35 myArray.forEach { numberArray -> numberArray.forEach { println(it) } } }
あー、こうなりましたか…
val myArray = Array(2) { IntArray(3) }
つまり3次元配列になると…
val myArray = Array(2) { Array(3) { IntArray(4) } }