Groovy: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Che13 (обсуждение | вклад) →Примеры: орфография |
Nashev (обсуждение | вклад) →Особенности работы: https://habr.com/ru/company/nix/blog/483888/ - с 11 версии джаву тоже можно. + везде source вместо местами syntaxhighlight, для единообразия |
||
Строка 139:
== Особенности работы ==
<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>
Параметры с установленными значениями:
<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">▼
<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">▼
▲
<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:▼
<source lang="groovy">
@Immutable
Строка 236 ⟶ 249 :
def newVariable = new ImmutableClass(stringVariable : "some string", integerVariable : 23)
</source>
'''Traits''' - это интерфейс и его стандартная реализация и состояние в одном месте
<source lang="groovy">
trait UserTrait {
abstract String name()
Строка 252 ⟶ 267 :
println emp.name()
println emp.showName()
</source>
<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):
<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>
== Примечания ==
|