🎷 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.