[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
→‎Примеры: орфография
→‎Особенности работы: https://habr.com/ru/company/nix/blog/483888/ - с 11 версии джаву тоже можно. + везде source вместо местами syntaxhighlight, для единообразия
Строка 139:
 
== Особенности работы ==
ВТак отличиеже, откак Java,начиная вс Groovy11 версии Java, исходный код Groovy может быть выполнен как обычный скрипт,. еслиДля содержитэтого он должен содержать код вне определения класса или класс с методом main, или Runnable, или GroovyTestCase:
<source lang="groovy">
#!/usr/bin/env groovy
println "I can execute this script now!"
</source>
 
Строки в Groovy: Java Strings с одинарными кавычками и GStrings с двойными кавычками.
<source lang="groovy">
Строка 157 ⟶ 158 :
 
Groovy неявно генерирует методы для доступа к переменным (setColor(String color) и getColor()):
 
<source lang="groovy">
class AGroovyBean {
Строка 171:
assert myGroovyBean.color == 'green'
</source>
 
Groovy предлагает простой и последовательный доступ к спискам, отображениям и массивам:
<source lang="groovy">
Строка 183 ⟶ 184 :
assert monthMap.size() == 4
</source>
 
'''Closure''' (замыкание) — это анонимная функция и объект в одном виде:
<source lang="groovy">
Строка 192 ⟶ 194 :
closureFunction(1, 2)
</source>
 
return в функции указывать не обязательно — по умолчанию будет возвращено значение последней упомянутой переменной.
 
Строка 198 ⟶ 201 :
closureFunction 1,2
</source>
 
Параметры с установленными значениями:<syntaxhighlight lang="groovy" line="1">
<source lang="groovy">
def say(msg = 'Hello', name = 'world') {
"$msg $name!"
Строка 208 ⟶ 213 :
assert 'Hi world!' == say('Hi')
assert 'Howdy, mrhaki!' == say('Howdy,', 'mrhaki')
</source>
</syntaxhighlight>Множественное присваивание переменных:<syntaxhighlight lang="groovy" line="1">
 
</syntaxhighlight>Множественное присваивание переменных:<syntaxhighlight lang="groovy" line="1">
<source lang="groovy">
// Assign and declare variables.
def (username, email) = ['mrhaki', 'email@host.com']
Строка 222 ⟶ 230 :
}
def (coordX, coordY) = iAmHere()
</source>
</syntaxhighlight>Запуск нового потока при объявлении с ключевым словом "as" которое приводит объект Thread к интерфейсу Runnable:<syntaxhighlight lang="groovy" line="1">
 
</syntaxhighlight>Запуск нового потока при объявлении с ключевым словом "as" которое приводит объект Thread к интерфейсу Runnable:<syntaxhighlight lang="groovy" line="1">
<source lang="groovy">
// Use as to treat closure as implementation for
// the Runnable interface:
def t = new Thread({ println 'hello' } as Runnable)
t.start() // Output: hello
</source>
</syntaxhighlight>Неизменяемые классы маркируются с помощью аннотации Immutable:
 
</syntaxhighlight>Неизменяемые классы маркируются с помощью аннотации Immutable:
<source lang="groovy">
@Immutable
Строка 236 ⟶ 249 :
def newVariable = new ImmutableClass(stringVariable : "some string", integerVariable : 23)
</source>
 
'''Traits''' - это интерфейс и его стандартная реализация и состояние в одном месте.<syntaxhighlight lang="groovy" line="1">:
<source lang="groovy">
trait UserTrait {
abstract String name()
Строка 252 ⟶ 267 :
println emp.name()
println emp.showName()
</source>
</syntaxhighlight><syntaxhighlight lang="groovy">
 
<source lang="groovy">
trait Id {
Long id = 0
Строка 267 ⟶ 284 :
assert domainPerson.id == 0
assert domainPerson.version == 1
</source>
 
Свой менеджер зависимостей '''[http://docs.groovy-lang.org/latest/html/documentation/grape.html Grape]''' позволяет загружать необходимые библиотеки и файлы из maven репозитариев при вызове из командной строки (файл - testJetty.groovy):<syntaxhighlight lang="groovy">
</syntaxhighlight>
<source lang="groovy">
Свой менеджер зависимостей '''[http://docs.groovy-lang.org/latest/html/documentation/grape.html Grape]''' позволяет загружать необходимые библиотеки и файлы из maven репозитариев при вызове из командной строки(файл - testJetty.groovy):<syntaxhighlight lang="groovy">
import org.eclipse.jetty.server.Server
import org.eclipse.jetty.servlet.*
Строка 285 ⟶ 303 :
println "Starting Jetty, press Ctrl+C to stop."
startJetty()
</source>
</syntaxhighlight>
 
== Примечания ==