ラムダで再帰だって!?
2021/04/04

java8です。
数年に一回はjavaのラムダで再帰をと思い立ち調べて..あああとなるわけです。
モチベーション
ディレクトリにマーカーファイル(目じるしファイル)をおいておきそこの場所をルートまで辿って調べたい。なかったらnullを返す。
コード
再帰のためのお助け定義
public class Recursive<I> {
public I func;
}
final Recursive<Function<Path, Path>> recursive = new Recursive<>();
recursive.func = (p) -> {
Path path2 = p.resolve(MARKER_FILE);
if (!Files.exists(path2)) {
Path parentPath = p.getParent();
if (parentPath == null)
return null;
return recursive.func.apply(parentPath);
}
return p;
};
final Path fpath = recursive.func.apply(path);
参考
https://stackoverflow.com/questions/19429667/implement-recursive-lambda-function-using-java-8
: