Если я определяю закрытие в Groovy
def c = {println "foo"}
Я могу вызвать его с помощью также
c()
или
c.call()
AFAIK, эти два идентичны. Однако я недавно обнаружил третий путь
c.doCall()
Есть ли любые различия между call()
и doCall()
Спасибо, Дон
Метод doCall - это то, что вызывается при вызове c() или c.call().
Я нашел пример, в котором утверждалось, что он используется для вызова функции закрытия изнутри самого себя, но, похоже, это тоже работает с функцией call().
В документации документация говорит о необходимости предоставления метода doCall() для указания параметров для вызова функции закрытия в сокращенном виде (без явного использования вызова функции call()). Но я не знаю, как именно они ожидают, что это сработает.