LoginSignup
1
1

More than 5 years have passed since last update.

TailCall#invokeをループで書き直す

Last updated at Posted at 2016-11-03

「Javaによる関数型プログラミング」の「7.1.3 TailCall関数型インタフェース」で紹介されているTailCallについてです。

例のごとくソースは公式サイトを参照してください。
https://media.pragprog.com/titles/vsjava8/code/recur/fpij/TailCall.java

このインタフェースでは、invokeというメソッドで、再起呼出しをStremに置き換えています。内容は合っていると思いますが、飛躍が大きいので、invokeをループで書くとこうなります。

  default T invokeLegacy() {
      TailCall<T> c = this;
      while(!c.isComplete()) {
          c = c.apply();
      }
      return c.result();
  }

ループで書いてみると簡単ですね。streamも便利でいいのですが、慣れないうちは、ループだったらどう書くかを考えてみるといいかもしれません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1