Подтвердить что ты не робот

Вызов закрытия Groovy

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

def c = {println "foo"}

Я могу вызвать его с помощью

c()

или

c.call()

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

c.doCall()

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

Спасибо, Дон

4b9b3361

Ответ 1

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

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

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

Здесь объяснение вызова против doCall.