🎷 Groovy

Динамический JVM-язык: типы, замыкания, коллекции, Gradle и Jenkins.

Шпаргалки · Программирование · #groovy #jvm #gradle

IDE и запуск

IntelliJ IDEA, VS Code. groovy script.groovy, groovysh. Основные области: Gradle-скрипты (build.gradle), Jenkins Pipeline, Spock-тесты.

Типы данных

def x = 1                 // динамический тип
int n = 1; String s = 'a'; boolean ok = true
def list = [1, 2, 3]; def map = [a: 1, b: 2]
def text = "n = ${n}"     // GString
def multi = '''много
строк'''

Операторы

+ - * / % **, == != <=>, ?. (безопасный доступ), ?: (элвис), *. (spread), << (добавить в список), =~ (regex).

Циклы

for (i in 0..2) {}
for (x in list) {}
list.each { println it }
3.times { println it }
(1..10).step(2) { }

Функции и замыкания

def add(a, b = 0) { a + b }            // return не обязателен
def sq = { x -> x * x }                // замыкание
list.collect { it * 2 }

Встроенные

println, assert, .each, .collect, .findAll, .find, .inject, .sort, .join, .toInteger(), new File('a').text.

Асинхронность

Thread.start { }, GPars (параллелизм), @Field, Executors из Java.

Коллекции

list.findAll { it > 1 }.sum()
map.each { k, v -> println "$k=$v" }
list.groupBy { it % 2 }

Где применяют

Gradle, Jenkinsfile (pipeline { stages { } }), Spock (тесты), Grails, Apache Camel.