Странная заводная конструкция закрытия
Как этот код работает в groovysh:
whatever: { x = 1+1 }
Я не понимаю, как Groovy выполняет это замыкание и как это интерпретирует:'\<anyText\> :
'. Для вызова закрытия используется()
илиcall()
согласно документация . В Groovy нет оператора «:».
Я видел этот код в Jenkinsfile и попытался его проанализировать. Я использовал groovysh, код рабочий, и я не понимаю, как он работает.
1 ответ
Это часть более крупного литерала карты Groovy со строкой (whatever
) как ключ и замыкание{ x = 1+1 }
как ценность. Скорее всего, скобки вокруг литерала карты[]
опущены.
Я могу предположить, что код оценивается в каком-то DSL-конструкторе, где выполняется замыкание и вместе с ключом каким-то образом добавляется к результату.
x
внутри замыкания относится к локальной переменной либо в DSL-скрипте, либо в построителе.
Если вы посмотрите на более широкую картину, все очень быстро начнет обретать смысл.