Преимущества
Спросив любого человека, который имеет опыт работы с Groovy, вы узнаете, что главное преимущество Groovy – это то, что он спокойно «проглатывает» программы на Java. Если искать сравнение в графике, то Groovy – это новый слой, который, с одной стороны, основывается на исходном изображении и может его в точности повторять, а с другой – способен на качественные преобразования исходника.
Впрочем, есть и реальные полезности, как то возможность использовать замыкания, статическая и динамическая типизации или специальный синтаксис для работы с массивами, списками и регулярными выражениями. Однако именно «бесшовное» сопряжение с Java, сдобренное относительной легкостью изучения, помогло Groovy найти отклики в сердцах программистов.
Что касается стремительного взлёта за последний год, то основной причиной послужил переход под знамена Apache Foundation в мае 2015 года. Сразу после этого, многие ведущие технологические компании, опираясь на репутацию Apache, начали на постоянной основе внедрять и использовать Groovy в качестве одного из инструментов. И стоит признать, от этого сотрудничества пока все в выигрыше.
Начало работы с Groovy
s http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>tyle=»clear:both;»>
оглавление
1. Что такое Groovy?
Groovy — это динамический язык, основанный на JVM, который можно использовать как для объектно-ориентированного программирования, так и для чисто скриптового языка.
2. Настроить Groovy
- Groovy зависит от Java, поэтому сначала необходимо настроить JDK
- Скачать Groovy:http://groovy-lang.org/download.html, Тогда распакуйте
- Настройте переменные среды: GROOVY_HOME = «D: \ groovy-2.5.1» (обратитесь к собственному пути установки)
- Добавить% GROOVY_HOME% \ bin к пути
- Введите в консоли groovy -v, если версия распечатана, конфигурация прошла успешно
3. Опыт Groovy собственного редактора
Введите в консоли: groovyconsole, чтобы запустить встроенный редактор.
Введите println «Hello Groovy», затем нажмите CTRL + R для запуска.
4. Используйте Intellij IDEA для создания Groovy проекта
File -> New -> Project
Создайте новый пакет с именем groovy в src, а затем создайте новый класс Groovy с именем Book.
Задайте выходной путь для сохранения файла класса после компиляции Groovy. Файл -> Структура проекта, выберите путь во всплывающем окне.
(Groovy скрипт в основном используется для тестирования Groovy класса)
Щелкните правой кнопкой мыши Перекомпилировать вновь созданный файл groovy, запустите файл groovy. Консольный вывод: Hello Book
5. Базовые знания Groovy
- Полностью совместим с синтаксисом Java, то есть вы можете написать код Java в Groovy
- Точка с запятой необязательна
- Методы и классы общедоступны по умолчанию
- Компилятор автоматически добавляет методы получения / установки для атрибутов
- Свойства могут быть получены непосредственно с помощью точек
- Значение последнего выражения используется как возвращаемое значение, возврат не может быть записан
Создать новый Groovy Script
Запустить скрипт
Из-за 1! = 2
Есть три представления
результат операции
List
запустить
map
Закрытие — это блок кода, заключенный в «{}».
{Параметр -> Код …}
запустить
Интеллектуальная рекомендация
19.03.21 Я загрузил комплексные обучающие видеоуроки Photoshop CC 2015 и обучающие видеоуроки по новым функциям PS CC 2015. Я просмотрел несколько видео, но мне кажется, что они в основном объясняют н…
…
проверка данных весеннего mvc Два способа проверки данных Spring MVC: 1.JSR303 2.Hibernate Validator Второй метод является дополнением к первому методу Шаги для проверки данных с использованием Hibern…
Существует два способа вызова между сервисами Springcloud: RestTemplate и Feign. Здесь мы представляем сервисы вызова RestTemplate. 1. Что такое RestTemplate RestTemplate — это структура веб-запросов …
1. Понимать предварительный, средний, последующий порядок и иерархическую последовательность бинарных деревьев; Свяжите язык C со структурой данных двоичного дерева; Освойте с…
Вам также может понравиться
Последнее обучение, как использовать Kaldi, чтобы проснуться без использования WSTF, поэтому вам нужно глубоко пойти в Kaldi для обучения. Временное состояние обучения. Три изображения представляют со…
Во время простоя некоторые веб-страницы, которые мы создали, не были завершены, но не хотят, чтобы другие видели, вы можете создать простой эффект шифрования страницы на странице этой веб-страницы, ан…
Расширенные статьи серии Zookeeper 1. NIO, ZAB соглашение, 2PC представления концепции 2. Лидер выборов 3. Рукописный распределенный замок, центр настройки ==================================== 1. NIO,…
Посмотрите на конечный эффект первым DemoPreview.gif SETP1 эффект капли воды Первая реакция на эффект капли воды — нарисовать замкнутую кривую. С помощью события MotionEvent измените радиус во время п…
…
Создание списков Groovy
Groovy предоставляет некоторые интересные сочетания клавиш при работе с коллекциями, которые используют поддержку динамической типизации и буквального синтаксиса.
Начнем с создания списка с некоторыми значениями с использованием сокращенного синтаксиса:
Точно так же мы можем создать пустой список:
По умолчанию Groovy создает экземпляр java.util.ArrayList. Однако мы также можем указать тип создаваемого списка :
Затем списки можно использовать для создания других списков с помощью аргумента конструктора:
или путем клонирования:
Обратите внимание, что при клонировании создается неглубокая копия списка. Groovy использует оператор «==» для сравнения элементов в двух списках на предмет равенства
Продолжая предыдущий пример, при сравнении cloneList с arrlist результат верен:
Groovy использует оператор «==» для сравнения элементов в двух списках на предмет равенства. Продолжая предыдущий пример, при сравнении cloneList с arrlist результат верен:
Теперь давайте посмотрим, как выполнять некоторые общие операции со списками.
Scripts versus classes
3.1. public static void main vs script
Groovy supports both scripts and classes. Take the following code for example:
Main.groovy
1 | define a class, the name is arbitrary |
2 | the method is usable as the main method of the class |
3 | the main body of the method |
This is typical code that you would find coming from Java, where code has to be embedded into a class to be executable.
Groovy makes it easier, the following code is equivalent:
Main.groovy
A script can be considered as a class without needing to declare it, with some differences.
3.2. Script class
A script is always compiled into a class. The Groovy compiler will compile the class for you,
with the body of the script copied into a method. The previous example is therefore compiled as if it was the
following:
Main.groovy
1 | The class extends the class |
2 | requires a method returning a value |
3 | the script body goes into the method |
4 | the method is automatically generated |
5 | and delegates the execution of the script on the method |
If the script is in a file, then the base name of the file is used to determine the name of the generated script class.
In this example, if the name of the file is , then the script class is going to be .
3.3. Methods
It is possible to define methods into a script, as illustrated here:
You can also mix methods and code. The generated script class will carry all methods into the script class, and
assemble all script bodies into the method:
1 | script begins |
2 | a method is defined within the script body |
3 | and script continues |
This code is internally converted into:
1 | the method is copied as is into the generated script class |
2 | first statement is copied into the method |
3 | second statement is copied into the method |
Even if Groovy creates a class from your script, it is totally transparent for the user. In particular, scripts are compiled to bytecode, and line numbers are preserved. This implies that if an exception is thrown in a script, the stack trace will show line numbers corresponding to the original script, not the generated code that we have shown. |
3.4. Variables
Variables in a script do not require a type definition. This means that this script:
will behave the same as:
However, there is a semantic difference between the two:
-
if the variable is declared as in the first example, it is a local variable. It will be declared in the
method that the compiler will generate and will not be visible outside of the script main body. In particular, such
a variable will not be visible in other methods of the script -
if the variable is undeclared, it goes into the . The binding is
visible from the methods, and is especially important if you use a script to interact with an application and need to
share data between the script and the application. Readers might refer to the
for more information.
Another approach to making a variable visible to all methods, is to use the . A variable annotated this way will become a field of the generated script class and, as for local variables, access won’t involve the script . While not recommended, if you have a local variable or script field with the same name as a binding variable, you can use to access the binding variable. |
Defining the type of the parameters of a Groovy function
In Groovy you can use the Groovy types to specify what kind of values a function is expected
to receive. For example here we declare that our add function is expecting two Integer values.
examples/groovy/add_integers.groovy
def add(Integer x, Integer y) { return x+y } println(add(2, 3)) // 5 // add("abc", 3)
If we call it with two integers we get the correct answer. However if we try to pass a string, Groovy will give us an
exception like this:
Caught: groovy.lang.MissingMethodException: No signature of method: add_integers.add() is applicable for argument types: (java.lang.String, java.lang.Integer) values: Possible solutions: add(java.lang.Integer, java.lang.Integer), any(), wait(), run(), run(), find() groovy.lang.MissingMethodException: No signature of method: add_integers.add() is applicable for argument types: (java.lang.String, java.lang.Integer) values: Possible solutions: add(java.lang.Integer, java.lang.Integer), any(), wait(), run(), run(), find() at add_integers.run(add_integers.groovy:8)
Современная разметка
Тег имеет несколько атрибутов, которые редко используются, но всё ещё могут встретиться в старом коде:
Атрибут type: <script type=…>
Старый HTML стандарт — HTML4, требовал наличия этого атрибута в теге . Обычно он имел значение . На текущий момент этого больше не требуется. Более того, в современном стандарте HTML смысл этого атрибута полностью изменился. Теперь он может использоваться для JavaScript-модулей. Но это тема не для начального уровня, и о ней мы поговорим в другой части учебника.
Атрибут language: <script language=…>
Этот атрибут должен был задавать язык, на котором написан скрипт. Но так как JavaScript является языком по умолчанию, в этом атрибуте уже нет необходимости.
Обёртывание скрипта в HTML-комментарии.
В очень древних книгах и руководствах вы сможете найти комментарии внутри тега , например, такие:
<script type=’text/javascript’><!—
…
//—></script>
Этот комментарий скрывал код JavaScript в старых браузерах, которые не знали, как обрабатывать тег . Поскольку все браузеры, выпущенные за последние 15 лет, не содержат данной проблемы, такие комментарии уже не нужны. Если они есть, то это признак, что перед нами очень древний код (очень старый сайт).
Groovy: часть 2 — Hello World и базовый синтаксис
Hello, Groovy
Самый простой способо выполнить «Hello, World» — используя Groovy shell :
И выполнить println(‘Hello World’) :
Либо — в виде скрипта:
Оператор Import
Оператор import используется (внезапно) для импорта библиотек для использования в вашем коде.
В примере ниже — выполняется импорт класса MarkupBuilder :
По умолчанию — Groovy выполняет импорт следющих библиотек:
Комментарии в Groovy
В Groovy имеются как однострочные так и многострочные комментарии.
Однострочный комментарий начинается с символов // и могжет быть помещен в любом месте кода:
Точка с запятой
В оригинале говорится « it is required to have semicolons Groovy» — на самом деле их не обязательно использовать каждый раз.
Может — в более старых версиях Groovy они требовались? http://groovy-lang.org/semantics.html: «In Groovy semicolons at the end of the line can be omitted, if the line contains only a single statement.»
Пример кода с использованием точки с запятой:
Оба примера будут работать одинаково:
Однако при использовании нескольких операторов в одной строке — их необходимо разделять:
Иначе — возникнет ошибка:
Идентификаторы
def тут — ключевое слово, используемое в Groovy для определения идентификатора.
Пример использования идентификатора в нашей Hello, World программе:
Ключевые слова
Ключевые слова — это специальные слова, зарезирвированные в Groovy для самого языка:
as | assert | break | case |
catch | class | const | continue |
def | default | do | else |
enum | extends | false | Finally |
for | goto | if | implements |
import | in | instanceof | interface |
new | pull | package | return |
super | switch | this | throw |
throws | trait | true | try |
while |
Пробелы
Пробелы в Groovy отделяют одну часть выражения от другой, позволяя компилятору различать отдельные элементы выражения.
В следующем примере — переменные отделяют ключевое слово def от переменной x :
Литералы
Литерал — обозначение для представления фиксированного значения в Groovy.
В Groovy имеются целочисленные (integer), символьные и строковые литералы, например:
Groovy Maps
A Map Groovy is a collection of Key Value Pairs
Examples of Groovy maps:
- – Collection of key-value pairs which has Tutorial as the key and their respective values
- Represent an Empty map
Here, is a list of map methods available in Groovy.
Methods | Description |
---|---|
containsKey() | Check that map contains this key or not? |
get() | This command looks up the key in this Map and returns the corresponding value. If you don’t find any entry in this Map, then it will return null. |
keySet() | Allows to find a set of the keys in this Map |
put() | Associates the specified value with the given key in this Map. If the Map earlier contained a mapping for this key. Then the old value will be replaced by the specified value. |
size() | Returns the number of key-value mappings. |
values() | This command returns a collection view of the values. |
Groovy Example:
def y = print y.get("fName")
Output
Jen
Что почитать
Как всегда, начинаем с перечисления ресурсов от производителя:
http://www.groovy-lang.org/events.html — важные мероприятия, посвящённые Groovy. В России они, к сожалению, пока не проводятся, зато если соберётесь в отпуск заграницу – не забудьте заглянуть и поинтересоваться, нет ли поблизости какой конференции.
Далее перейдем к хорошим книгам:
Grails. Гибкость Groovy и надежность Java, Глен Смит, Питер Ледбрук – прекрасная книга, посвященная главному фреймворку Groovy с массой практических уроков. Преимущественно для веб-разработчиков;
Groovy и Grails. Практические советы, Башар Абдул-Джавад – не столь увлекательное чтиво по сравнению с предыдущим (субъективно), но также будет иметь практическую ценность;
Making Java Groovy, Кеннет Коузен — книга, ориентированная на Java-разработчиков, которым захотелось сделать свою жизнь чуть проще.
Завершим знакомство с Groovy сторонними, но от того не менее полезными ресурсами:
https://habrahabr.ru/post/122127/ — всего за 15 минут вы прочитаете и усвоите основны Groovy.
https://ru.wikibooks.org/wiki/Groovy — довольно неплохой викиучебник на русском языке;
Testing with Groovy — если вы тестировщик и всё ещё читаете этот текст, то эта ссылка специально для вас;
Примеры:
Квадратное уравнение:
ПримерGroovy 1.7Sun Java 6gcj 3.4.5
В Java нет типа данных для работы с комплексными числами, поэтому вычисления производятся в дробных числах и выполняется отдельная проверка на знак дискриминанта. Реализация позволяет решать квадратные уравнения не только с целыми, но и с дробными коэффициентами.
Коэффициенты читаются из потока . Напрямую из него можно читать только отдельные байты, поэтому для повышения комфортности чтения используются классы и . Строки, прочитанные из , преобразуются в числа типа double с помощью метода Double.parseDouble(). Все операции ввода в Java должны находиться внутри блоков , чтобы гарантированно обрабатывать — класс исключений, порождаемых функциями чтения.
ПримерGroovy 1.7Sun Java 6gcj 3.4.5
Для Java приведенный код должен находиться в файле HelloWorld.java.
Факториал:
ПримерGroovy 1.7Sun Java 6gcj 3.4.5
Используется рекурсивное определение факториала. Для хранения больших чисел использован элементарный тип данных , позволяющий хранить числа от -263 до 263-1.
ПримерGroovy 1.7Sun Java 6gcj 3.4.5
Используется рекурсивное определение чисел Фибоначчи.
Факториал:
ПримерGroovy 1.7Sun Java 6gcj 3.4.5
Используется итеративное вычисление факториала. Для хранения больших чисел используется встроенный класс , позволяющий обрабатывать сколь угодно большие числа ценой увеличения времени обработки.
CamelCase:
ПримерGroovy 1.7Sun Java 6
В этом примере используются регулярные выражения Java. Регулярное выражение описывает последовательность букв латинского алфавита в любом регистре, идущих подряд, окруженную другими символами или концами строки. Пара классов и позволяют создать это регулярное выражение и извлечь из строки все фрагменты, соответствующие ему. Для каждого такого фрагмента его первый символ переводится в верхний регистр, а последующие — в нижний, с использованием стандартных методов класса . Наконец, результаты обработки фрагмента записываются в переменную типа , накапливающую результат.
Факториал:
Используется итеративное определение факториала: для вычисления факториала числа единица умножается последовательно на все числа от 1 до этого числа.
Факториал:
Используется рекурсивное определение факториала. Для того, чтобы функция могла рекурсивно обращаться сама к себе, она должна иметь отдельное объявление перед реализацией. Если тип значения, возвращаемого функцией, не задан, по умолчанию используется целочисленный, и при вычислении 13! возникает переполнение целого.
Используется простейшее рекурсивное определение чисел Фибоначчи.
Groovy List
List structure allows you to store a collection of data Items. In a Groovy programming language, the List holds a sequence of object references. It also shows a position in the sequence. A List literal is presented as a series of objects separated by commas and enclosed in square brackets.
Example of Grrovy list:
A list of Strings-
A list of object references –
A list of integer values –
An empty list-
Following are list methods available in Groovy:
Methods | Description |
---|---|
add() | Allows you to append the new value to the end of this List. |
contains() | Returns true if this List contains a certain value. |
get() | Returns the element at the definite position |
isEmpty() | Returns true value if List contains no elements |
minus() | This command allows you to create a new List composed of the elements of the original excluding those which are specified in the collection. |
plus() | Allows you to create a new List composed of the elements of the original together along with mentioned in the collection. |
pop() | Removes the last item from the List |
remove() | Removes the element at the specific position |
reverse() | Create a new List which reverses the elements of the original List |
size() | Returns the number of elements in this List |
sort() | Returns a sorted copy |
Consider the following Groovy script example
def y = println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
Output
true Best Learning
Списки
Groovy содержит встроенную поддержку списков. Списки объявляются путем перечисления элементов в квадратных скобках:
def someList = 1,2,3,4 // Создание спискаdef emptyList = // Создание пустого списка
Обращение к элементам списка осуществляется по индексу, как к массиву в Java:
someList // Обращение к элементу по индексу
Новые элементы могут быть добавлены в список различными способами:
someList5 = 6 // Добавление элемента в списокsomeList << 7 << 8 // Добавление элементов в конец списка someList += 9, 10 // "Приклеивание" списка
Теперь, совместное использование списков и ranges:
someList1..3 // "Срезка" списка - получение подспискаsomeList2..4 = 12, 13, 14 // Изменение подсписка
Также, для индексирования можно использовать и списки:
someList1,3,5..7,9 // Получение подсписка
Также, Groovy предоставляет встроенный цикл, для перебора элементов списка, или элементов любого объекта, реализующего интерфейс java.lang.Iterable:
for ( e in someList ) {println e // Распечатываем все элементы списка someList}
Коллекции других типов
По умолчанию, список, объявленный в Groovy имеет тип ArrayList. Но бывают случаи, когда необходимо использовать какую-либо другую реализацию коллекции, например LinkedList, или HashSet, или обычный массив Java. В этом случае, Groovy позволяет явно задать тип коллекция, используя следующую запись:
def linkedList = 1,2,3 as LinkedListdef set = 1,2,3 as Setdef array = 1,2,3 as Integer
String Methods
Here is the list of methods supported by String class.
S.No. | Methods & Description |
---|---|
1 |
center()
Returns a new String of length numberOfChars consisting of the recipient padded on the left and right with space characters. |
2 |
compareToIgnoreCase()
Compares two strings lexicographically, ignoring case differences. |
3 |
concat()
Concatenates the specified String to the end of this String. |
4 |
eachMatch()
Processes each regex group (see next section) matched substring of the given String. |
5 |
endsWith()
Tests whether this string ends with the specified suffix. |
6 |
equalsIgnoreCase()
Compares this String to another String, ignoring case considerations. |
7 |
getAt()
It returns string value at the index position |
8 |
indexOf()
Returns the index within this String of the first occurrence of the specified substring. |
9 |
matches()
It outputs whether a String matches the given regular expression. |
10 |
minus()
Removes the value part of the String. |
11 |
next()
This method is called by the ++ operator for the class String. It increments the last character in the given String. |
12 |
padLeft()
Pad the String with the spaces appended to the left. |
13 |
padRight()
Pad the String with the spaces appended to the right. |
14 |
plus()
Appends a String |
15 |
previous()
This method is called by the — operator for the CharSequence. |
16 |
replaceAll()
Replaces all occurrences of a captured group by the result of a closure on that text. |
17 |
reverse()
Creates a new String which is the reverse of this String. |
18 |
split()
Splits this String around matches of the given regular expression. |
19 |
subString()
Returns a new String that is a substring of this String. |
20 |
toUpperCase()
Converts all of the characters in this String to upper case. |
21 |
toLowerCase()
Converts all of the characters in this String to lower case. |
Find оператор[править]
Alternatively to building a pattern, you can directly use the find operator =~ to build a java.util.regex.Matcher instance:
def text = "some text to match" def m = text =~ /match/ /*1*/ assert m instanceof Matcher /*2*/ if (!m) { /*3*/ throw new RuntimeException("Oops, text not found!") }
- =~ creates a matcher against the text variable, using the pattern on the right hand side
- the return type of =~ is a Matcher
- equivalent to calling if (!m.find())
Since a Matcher coerces to a boolean by calling its find method, the =~ operator is consistent with the simple use of Perl’s =~ operator, when it appears as a predicate (in if, while, etc.).
Maps (Отображения)
Аналогично спискам, Groovy поддерживает прозрачный синтаксис для работы с maps (ассоциативными массивами). Объявление выглядит следующим образом:
def someMap = 'a' : 1, 'b' : 2 // Объявление
Также, существует специальный синтаксис для объявления пустых отображений:
def emptyMap = : // Объявление пустого отображения
Доступ к элементам осуществляется по ключу, с использованием оператора [], или же с ключом как полем:
someMap'a' // Доступ к элементуsomeMap.a // Доступ к элементу как к полю
Аналогично производится и изменение элементов:
someMap'a' = 2 // Изменение элементsomeMap.a = 2 // Изменение элемента, как поля
Структура программы на C ++
Давайте посмотрим на простой код, который будет печатать слова Hello World .
Давайте рассмотрим различные части вышеуказанной программы —
- Язык C ++ определяет несколько заголовков, которые содержат информацию, которая является необходимой или полезной для вашей программы. Для этой программы необходим заголовок .
- Строка с использованием пространства имен std; сообщает компилятору использовать пространство имен std. Пространства имен являются относительно недавним дополнением к C ++.
- Следующая строка ‘ — это начало выполнения программы. ‘- это однострочный комментарий, доступный на C ++. Однострочные комментарии начинаются с // и останавливаются в конце строки.
- Строка является основной функцией, в которой начинается выполнение программы.
- Следующая строка вызывает на экране сообщение «Hello World».
- Следующая строка завершает функцию и заставляет ее возвращать значение 0 в вызывающий процесс.
Итерация по списку
Groovy добавил новые методы к существующему API коллекций Java . Эти методы упрощают такие операции, как фильтрация, поиск, сортировка, агрегирование и т. Д., Инкапсулируя шаблонный код. Также они поддерживают широкий спектр входных данных, включая замыкания и структуры выходных данных.
Начнем с рассмотрения двух методов перебора списка.
Метод each () принимает закрытие и очень похож на метод foreach () в Java. Превосходный проходит неявный параметр это , который соответствует текущему элементу в каждой итерации:
Другой метод eachWithIndex () предоставляет текущее значение индекса в дополнение к текущему элементу:
Настройка среды разработки
Groovy необходимо запускать на виртуальной машине Java, поэтому вам необходимо установить среду Java.
среда Java
Затем разархивируйте загруженный сжатый пакет в любое место на жестком диске.
Затем настройте переменные среды и войдите в терминал
Откройте конфигурацию переменных окружения и добавьте конфигурацию java
Перезагрузите терминал и войдите в терминал
Видя, что отображается соответствующая информация о java, это означает, что конфигурация переменной среды java выполнена успешно.
Отличная среда
При настройке среды Groovy есть два основных шага: 1. Загрузите Groovy 2. Разархивируйте и настройте переменные среды.
скачать
Открытый заводнойСтраница загрузки, Мы обнаружим, что существует много версий, на данный момент (2018.5.24) он предоставляет: — Groovy2.6: Bleeding Edge Vesion — Groovy2.5: upcoming version — Groovy2.4: latest stable version
Затем мы выбираем версию 2.4, которая является последней стабильной версией.
Выберите загрузку этого пакета SDK или большую кнопку загрузки в верхней части этой страницы, которая соответствует ссылке для загрузки последней стабильной версии:
При загрузке обратите внимание, версия groovy и версия jdk должны соответствовать
Это indy и non-indy означает, что вам необходимо поддерживать инструкцию Java InvokeDynamic. Это новая инструкция байт-кода в java7. Если Groovy, который мы хотим использовать, скомпилирован с этой инструкцией, то требуется как минимум 1,7 или более Версия java, и если эта инструкция не используется, 2.4 на самом деле поддерживает JVM 1.6. На самом деле, когда мы пишем отличный код, влияние не будет большим, и отличная не-indy версия также используется по умолчанию, что в основном влияет на Это процесс компиляции. Рекомендуется использовать java8 или выше. В конце концов, java8 отсутствует уже давно, и это последняя версия с долгосрочной поддержкой.
Разархивируйте и настройте переменные среды
После скачивания можете распаковать в желаемое место
После распаковки нам нужно настроить переменные среды, такие как Java:
Фактически, это настроить папку bin в путь, перезапустить терминал после завершения настройки и затем ввести:
Видеть означает, что мы успешно настроили переменные среды Groovy.
Groovy- Closures
A groovy closure is a piece of code wrapped as an object. It acts as a method or a function.
Example of simple closure
def myClosure = { println "My First Closure" } myClosure()
Output:
My First Closure
A closure can accept parameters. The list of identifies is comma separated with
an arrow (->) marking the end of the parameter list.
def myClosure = { a,b,c-> y = a+b+c println y } myClosure(1,2,3)
Output
6
A closure can return a value.
def myClosure = { a,b,c-> return (a+b+c) } println(myClosure(1,2,3))
Output
6
There are many built-in closures like “It”, “identity”, etc. Closures can take other closure as parameters.
Hello World in a function
The def keyword allows use to define a function that we can use in the code.
examples/groovy/hello_world_function.groovy
hi() def hi() { println("Hello World!") }
After the def keyword we provide the name of the function and then in parentheses the list
of expected parameters. In our first example there are no paramaters.
Then within curly braces we put the body of the function.
We can put the definition of the function anywhere in the file. A good practice would be to put all the functions
in the end of the file and put the main body of the code at the top. That will make it easier to read.
Better yet, you might want to put all your code in functions and leave only a single call to a single function in the
main body of your code. That will probably help keepting the code clean.