Groovyのupto()メソッド活用方法

GroovyはJavaをベースにした強力なプログラミング言語で、簡潔で柔軟なコードが書ける特徴があります。
その中でも、upto()メソッドは、繰り返し処理を簡単に書くための非常に便利なツールです。本記事では、upto()メソッドの基本から応用まで、具体的なコード例とともに解説していきます。

1. upto()メソッドとは?

upto()メソッドは、数値の範囲を順次処理するためのメソッドです。指定した開始値から終了値までの範囲を1ずつインクリメントしながら繰り返し処理を行います。

基本構文

start.upto(end) { closure }

start: 繰り返しを開始する数値。
end: 繰り返しを終了する数値。
closure: 各イテレーションで実行する処理を記述したブロック。

2. 基本的な使用例

まずはシンプルな例から見ていきましょう。

例1: 数値の出力

1.upto(5) { println it }

出力結果:

1
2
3
4
5

1.upto(5) は、1から5までの数値を順に繰り返し、it はクロージャのデフォルト変数で、現在のイテレーションの値を表します。

3. 応用例1: 配列やリストの操作

upto()メソッドは、リストや配列の操作にも活用できます。

例2: 配列の要素を順に処理

def fruits = ["apple", "banana", "cherry", "date", "elderberry"]

0.upto(fruits.size() - 1) { 
    println "Index: $it, Fruit: ${fruits[it]}"
}

出力結果:

Index: 0, Fruit: apple
Index: 1, Fruit: banana
Index: 2, Fruit: cherry
Index: 3, Fruit: date
Index: 4, Fruit: elderberry

fruits.size() - 1 は配列の最後のインデックスを表し、現在のインデックス (it) を利用して要素を取得します。

4. 応用例2: 特定条件で処理をカスタマイズ

upto()メソッドは、条件付きの処理にも便利です。

例3: 偶数のみを処理

1.upto(10) { 
    if (it % 2 == 0) {
        println "$it is even"
    }
}

出力結果:

2 is even
4 is even
6 is even
8 is even
10 is even

5. 応用例3: 入れ子構造のループ

upto()メソッドをネストして使うことで、多重ループを簡潔に記述できます。

例4: 乗算表を生成

1.upto(3) { i ->
    1.upto(3) { j ->
        print "${i * j}\t"
    }
    println()
}

出力結果:

1	2	3	
2	4	6	
3	6	9	

外側のupto()で行 (i) を制御し、内側のupto()で列 (j) を制御します。
タブ文字 (\t) を使って整列。

8. まとめ

Groovyのupto()メソッドは、簡潔な構文で範囲処理を可能にする便利なツールです。
今回紹介した基本的な使い方から応用例までを押さえることで、以下のような場面で効率的に活用できます。

  • シンプルな繰り返し処理
  • 配列やリストの操作
  • 条件付き処理や多重ループ
  • データベース操作や非同期処理

upto()を使いこなせば、コードの可読性と生産性が格段に向上するので、覚えておいて損はありません。