【KotlinとJava】forループを使う

10 forループを使う

KotlinとJava

今回はリストや配列に対してループを行うサンプルだ。いわゆるforEach形式のfor文である。

Use a for-loop.kt

fun main(args: Array<String>) {
    for (arg in args) {
        println(arg)
    }

    println()

    // or
    for (i in args.indices) {
        println(args[i])
    }
}

リンク

for

繰り返し処理するのが単行の場合はブレース{}は省略できるが、筆者のポリシーとしてつけさせていただいた。

すべての要素をについて繰り返し処理を行いたいのなら、上の書式を使えばよい。配列に対してインデックスを使ってアクセスを行うと、初期化やインクリメントで問題が発生することがある。

…と思っていたら、Kotlinではインデックスアクセスにもうまい方法が提供されていた。それがfor (i in args.indices)だ。インデックスの変数が提供されているのだから、ブロックの中でiの値を変更できてしまうのでは?つまり、次のようなことのできるのでは?と思うかもしれない。

for (i in args.indices) {
	i++
	println(args[i])
}

しかし、このような書き方はコンパイラが許してくれない。iという変数はval(つまり変更不可)で宣言されているようだ。これでインデックスアクセスもだいぶ間違いを排除することができるはずだ。

Javaで記述

対比ができるようにJavaでも同じものを記述してみよう。

public class Exp10 {  
    public static void main(String[] args) {  
        for (String arg : args) {  
            System.out.println(arg);  
        }  
  
        System.out.println();  
  
        // or  
        for (int i = 0; i < args.length; i++) {  
            System.out.println(args[i]);  
        }  
    }  
}

こちらはもはやおなじみだろう。

コメント

このブログの人気の投稿

【KotlinとJava】分解宣言

wxPythonでのモーダルダイアログ作成

【Delphi Sample】並列プログラミング1