私はGroovyを使い慣れていません。私は専門書類でクロージャを勉強しています。 The 'delegate of a closure' topicは怒鳴る例を示します:なぜこのクロージャーコールは再帰呼び出しで終了しないのですか?
ので、数5で、私はそのデリゲートがケースに囲まれた閉鎖enclosed
であることを、所有者にデフォルトに設定されている知っています。
それでは、なぜ再帰呼び出しで終わるしないenclosed
クロージャ内
{ -> delegate }.call()
を呼び出しますか?私の再帰のように見えますが、コードを実行すると再帰ではありません。ここで私は何が欠けているのですか?
@Emmanuel Rosaが再帰的な呼び出しに '{ - > delegate} .call()。call()'が必要であるという答えをあなたの答えに入れてください。私はこれが質問にとって非常に重要だと思います。ありがとう! – reinaldoluckman
私は同意するだろうが、最初に質問された質問には関係がないと感じた。質問は「私は何が欠けていますか?」でした。答えは閉鎖がどのように働くかを理解することでした。疑いなく、.call().call()は再帰を引き起こしますが、コードブロック全体は無意味です。さらに、.call()が.call()をもう一度呼び出すことができる「Closure」を返すことを、コードを見て別にどうやって確認しますか?最初に.call() 'instanceof' Closureをチェックしてから.call()を実行すると良いでしょう。私はあなたにこれを手伝ってくれてうれしいです。 – dmahapatro