ラムダで再帰だって!? 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

 

: