No Programming, No Life

プログラミング関連の話題や雑記

Groovyで2回目の呼び出し以降は計算せず高速で値を返却するメソッドを作る

2回目の呼び出し以降は計算せず高速で値を返却するメソッドを作ってみました。 いわゆるメモ化ですね。Groovyの場合はクロージャが使えるので、理解しやすいと思います。

動作環境

Groovy Version: 3.0.2 JVM: 14 Vendor: Oracle Corporation OS: Windows 10

ソース

def calc(num1, num2) {
    def num = num1 + num2 // 計算結果をここで保持
    return { num } // 計算結果を返すクロージャを返す
}

def doCalc = calc(5, 8)
assert doCalc() == 13
  • 最初に calc メソッドが呼ばれた時に1回だけ num1 + num2 が計算されて、結果が num に格納されます
  • 格納された num を返却するクロージャが返却されます
  • 返却されたクロージャは何度呼び出しても num を返却するだけなので高速です