Странная заводная конструкция закрытия

Как этот код работает в groovysh:

      whatever: { x = 1+1 }

Я не понимаю, как Groovy выполняет это замыкание и как это интерпретирует:'\<anyText\> :'. Для вызова закрытия используется()илиcall()согласно документация . В Groovy нет оператора «:».

Я видел этот код в Jenkinsfile и попытался его проанализировать. Я использовал groovysh, код рабочий, и я не понимаю, как он работает.

1 ответ

Это часть более крупного литерала карты Groovy со строкой (whatever) как ключ и замыкание{ x = 1+1 }как ценность. Скорее всего, скобки вокруг литерала карты[]опущены.

Я могу предположить, что код оценивается в каком-то DSL-конструкторе, где выполняется замыкание и вместе с ключом каким-то образом добавляется к результату.

xвнутри замыкания относится к локальной переменной либо в DSL-скрипте, либо в построителе.

Если вы посмотрите на более широкую картину, все очень быстро начнет обретать смысл.

Другие вопросы по тегам