Инструменты пользователя

Инструменты сайта


jenkins:groovy

Groovy

https://www-tutorialspoint-com.translate.goog/groovy/index.htm?_x_tr_sl=en&_x_tr_tl=ru&_x_tr_hl=ru&_x_tr_pto=sc
https://www.baeldung.com/groovy-lists

:!: Notes

- Все является объектами, все примитивные типы сразу же упаковываются в объекты
- все упаковочные типы неизменяемые, каждый раз при каком либо вычислении будет создаваться новый объект

- 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
}
 
:!: Строки

В одинарных кавычках - Java Strings, внутри можно заключить двойные кавычки
В двойных кавычках - Groovy Strings (GStrings), как минимум, в такою строку можно подставить переменную, «внутри - ${}«

 
:!: Списки

Объявляются путем перечисления элементов в квадратных скобках

  • add()/pop() - добавляет в конец/удаляет с конца
  • contains() - true/false, содержится ли элемент
  • plus()/munis() - создает новый список добавляя/удаляя указанные элементы
  • remove() - удаляет в указанной позиции, удаляет в том же списке
  • revers()/sort()/size()
def somw_list = [1, 2, 3, 4]
def empty_list = []
 
// Обращение
some_list[0]
 
// Добавление новых элементов
some_list[5] = 6
some_list << 7 << 8
some_list += [9, 19]
 
// Совместно с range
some_list[1..3] // срезка списка
some_list[2..4] = [12, 13, 14]
some_list[1, 2, 3..7, 8] // получение подсписка

Операции над списками

// Перебор
for (e in some_list) {
  println e
}
 
some_list.each{ println it }
 
some_list.eachWithIndex{ it, i-> println "$i : $it" }

Фильтрация

assertTrue(some_list.findAll{ it>3 } == 4)
 
assertTrue(some_list.grep(Number) == [2,3,1,4,5,7])
 
some_list.unique()

Типы списков. По умолчанию ArrayList, можно объявить например LinkedList, HashSet или обычный массив Java

def linked_list = [1, 2, 3] as LinkedList
def set = [1, 2, 3] as Set
def array = [1, 2, 3] as Integer[]

Spread Operator
Вызов метода для каждого элемента списка

[1,2,3]*.plus(5) // каждый элемент увеличится на 5
:!: Maps

Ассоциативный массив, словарь

  • keySet()/values() - набор ключей/значений в словаре, возвращает в виде списка
  • size()
  • put(Object key, Object value) - вкставка пары «ключ-значение», существующий ключ затирается
  • boolean containsKey(Object key) - поиск указаного ключа, возвращает true/false
  • Object get(Object key) - возвращает значение указанного ключа либо «Null»
def some_map = ['a':1, 'b':2]
def some_map = [:] // пустой
 
// Доступ
some_map['a']
come_map.a
 
some_map['a'] = 2
come_map.a = 2 // изменение как поля (?)
:!: Аргументы командной строки
println args
println args.length
println args.getClass()
 
println args[0]
println args[0].length()
println args[0].getClass()
 
 
if ((args.length == 0) || (args[0].length() == 0)) {
  println "args must be set. error"
  System.exit(1)
}
 
println "this good - '${args[0]}'"
 
///
/// вывод
/usr/bin/groovy grov.groovy "ddd"
 
[ddd]
1
class [Ljava.lang.String;
 
ddd
3
class java.lang.String
 
this good - 'ddd'
:!:
 
jenkins/groovy.txt · Последнее изменение: 2024/12/01 12:15 — admin