Chu*_*ulo 3 java lambda java-8
如果我需要递归使用,我怎样才能从内部引用LambdamyLambda?
myLambda -> {expression}
// ^^^^^^^^^^ how can I refer to myLambda here?
Run Code Online (Sandbox Code Playgroud)
如果你的意思是你要引用您定义的lambda表达式中是lambda表达式,我不相信有任何这样的机制.我知道一些有用的情况 - 递归定义,基本上 - 但我不相信它是支持的.
您无法在Java中捕获非最终变量这一事实使得这更加困难.例如:
// This doesn't compile because fib might not be initialized
Function<Integer, Integer> fib = n ->
n == 0 ? 0
: n == 1 ? 1
: fib.apply(n - 1) + fib.apply(n - 2);
Run Code Online (Sandbox Code Playgroud)
和:
// This doesn't compile because fib is non-final
Function<Integer, Integer> fib = null;
fib = n ->
n == 0 ? 0
: n == 1 ? 1
: fib.apply(n - 1) + fib.apply(n - 2);
Run Code Online (Sandbox Code Playgroud)
一个Y型组合子将有助于在这里,但我没有能拿出在Java中的例子,现在:(