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

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

def c = {println "foo"}

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

c()

или

c.call()

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

c.doCall()

Есть ли любые различия между call() и doCall()

Спасибо, Дон

16
задан Dónal 6 January 2010 в 17:15
поделиться

1 ответ

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

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

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

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

14
ответ дан 30 November 2019 в 22:55
поделиться