Вызов Groovy замыканий - PullRequest
       6

Вызов Groovy замыканий

16 голосов
/ 06 января 2010

Если я определяю замыкание в Groovy

def c = {println "foo"}

Я могу вызвать его, используя

c()

или

c.call()

AFAIK, эти два идентичны. Однако недавно я обнаружил третий способ

c.doCall()

Существуют ли различия между call() и doCall()

Спасибо, Дон

1 Ответ

14 голосов
/ 06 января 2010

Метод doCall вызывается при вызове c () или c.call ().

Я нашел пример, в котором утверждается, что он используется для вызова замыкания изнутри себя, но, похоже, он работает и с call ().

В документации говорится, что вам нужно предоставить метод doCall () для указания параметров, чтобы вызвать замыкание в краткой форме (без явного использования call ()). Но я не знаю, как именно они ожидают, что это сработает.

Вот объяснение вызова и doCall.

...