Это старая версия документа!
- Все является объектами, все примитивные типы сразу же упаковываются в объекты
- все упаковочные типы неизменяемые, каждый раз при каком либо вычислении будет создаваться новый объект
- Groovy Strings (GStrings) можно вставлять параметры
- К строчкам применимы операции сложения и умножения, а так же инкремент/декремент
- На уровне конструкций языка поддерживаются регулярные выражения
- Встроенная поддержка maps и list
- Поддерживает Ranges
// GStrings str1 = "${variable}" str2 = "${2+2}" // maps и list a = [1, 2, 3] ==> [1, 2, 3] b= [1: true, 0: false] ==> {1=true, 0=false}
Циклы
for (1 in 0..9) { print i } for (int i=0; i<9; ++i) { print i } for (Integer i: 0..9){ print i }
Доступно большое кол-во методов для обработки последовательностей, к которым можно применять замыкание
'qwerty'.each { print it } ('a'..'z').each { print it } ('a'..'z').findAll {el -> // filter el in ['e', 'y', 'i'] }.each { print it + '' } (0..10).collect {el -> // = map el * 10 }.each { print it + '' } def sum = (0..10).inject(0) {prev, elem -> // = reduce return prev + elem }
Файлы
Для директорий есть ф-я eachFile и eachFileRecursive
// Список файлов в директории new File(.).eachFile{ print it } // Обработка текстовых файлов new File('textfile.txt').eachLine { print it }