Groovy v příkladech: úvod do jazyka
V prvním díle našeho miniseriálku o Groovy se podíváme na základní datové struktury Groovy, na systém typování Groovy, na cykly, boolovské hodnoty a operátory, na komentáře, vyhodnocování proměnných v řetězcích a také na zápis víceřádkových řetězců. A co že to Groovy vlastně je? Jedná se o mladý skriptovací jazyk běžící pod JVM.
Sdílet
Typování v Groovy
Tipněte si, jak je typované Groovy :) Od skriptovacího jazyka se obecně očekává dynamické typování, které má i Groovy. Nelze však říci, že Groovy je dynamicky typovaný jazyk, protože Groovy umožňuje i statické typování. To mi přijde jako rozumný kompromis – deklarovat každou proměnnou je protivné, ale někdy se to prostě hodí. Více napoví následující příklad:
// dynamicky year = 2007 year = "2007" // OK // dynamicky s def def year = 2007 def year = "2007" // výjimka org.codehaus.groovy.control.MultipleCompilationErrorsException // staticky int year = 2007 year = "2007" year = 2008 // OK year = "2007" // výjimka org.codehaus.groovy.runtime.typehandling.GroovyCastException
Co se týče silného vs. slabého typování, Groovy je slabě typovaný jazyk. Někomu to může vyhovovat, ale dle mého názoru to bohužel omezuje vhodnost Groovy pro použití na větší projekty.
// integer + integer print "5 + 5 = " println 5 + 5 // string + string print '"5" + "5" = ' println "5" + "5" // integer + string print '5 + "5" = ' println 5 + "5" // string + integer print '"5" + 5 = ' println "5" + 5 => 5 + 5 = 10 => "5" + "5" = 55 => 5 + "5" = 55 => "5" + 5 = 55
Datové typy v Groovy
Groovy je silně objektový jazyk. To, co v klasických programovacích jazycích stylu jazyka C rozumíme jako datové typy jsou v Groovy v zásadě instance objektů:
println "string".class println 5.class println 5.5.class println 5000000000.class println false.class println true.class println null.class println [1, 2, "foo", new Date()].class => class java.lang.String => class java.lang.Integer => class java.math.BigDecimal => class java.lang.Long => class java.lang.Boolean => class java.lang.Boolean => java.lang.NullPointerException => class java.util.ArrayList
Zmíněnou ukázku není předpokládám třeba příliš vysvětlovat, metoda class vrací prostě třídu objektu. Přeskočíme čísla, jejichž použití je nad slunce jasné, a řekneme si pár vět k řetězcům.
Řetězce
V Groovy je možné psát víceřádkové řetězce, je však třeba je uvozovat třemi uvozovkami či apostrofy po obou stranách:
"jednořádkový řetězec" """ Víceřádkový řetězec """ => "jednořádkový řetězec" => "\nVíceřádkový\nřetězec\n"
Užitečnou možností je vyhodnocení proměnné uvnitř řetězce. To se dělá přiřazením znaku dolaru před jméno proměnné, funguje to však pouze v řetězcích, které jsou uvozeny uvozovkami a nikoliv apostrofy:
object = "pec" println "$object nám spadla." // řetězec uvozený uvozovkami println '$object nám spadla.' // řetězec uvozený apostrofy => pec nám spadla. => $object nám spadla.
Pokud se chystáme na nějaké divočejší kutění s proměnnou v řetězci, může se velmi hodit proměnnou a kód s ní spjatý uzavřít do složených závorek, aby Groovy poznalo, co je kód a co už je řetězec:
object = "pec"
println "${object.toUpperCase()} nám spadla."
println '${object.toUpperCase()} nám spadla.'
=> PEC nám spadla.
=> ${object.toUpperCase()} nám spadla.
Komentáře
Stejně jako v Javě Groovy používá dvě lomítka pro řádkový komentář a konstrukci /* */ pro komentář blokový. Klasický unixový komentář hashem nezná, s výjimkou #!/usr/bin/env groovy, které lze použít i v Groovy.
Standardní vstup a výstup
Pro výpis řetězce se stejně jako v mnoha dalších jazycích používá metoda print, pro výpis řetězce ukončený znakem konce řádku metoda println.
Booleovské hodnoty a operátory
V Groovy jsou k dispozici logické hodnoty true, false a null, které se používá pro prázdnou hodnotu. Z booleovských operátorů Groovy logické or ( ||), logické and ( &&) a samozřejmě negaci ( !). To těžko někoho z programátorů překvapí, spíše ale poznamenám, že zápisy výraz or výraz a výraz and výraz v Groovy použít nejdou.
-
- Konzultant prodeje (m/ž) - Kopřivnice - ONLINE POHOVOR
- Backend Engineer (Java) pro FinTech Scale-up
- Správce počítačové sítě a informačního systému
- C ++ System Software Engineer
- INTEGRAČNÍ VÝVOJÁŘ JUNIOR – DLOUHODOBÁ BRIGÁDA
- Specialista technické podpory
-
- Canva: grafika pro firmy a podnikatele
- Zkratky v online komunikaci
- 76 nejčastěji zaměňovaných slov v angličtině
- Prokreslete se k úspěšné prezentaci
- Zákoník práce v časech epidemie
- Vizuálním myšlením k úspěšnému byznysu
Cykly v Groovy
Cykly jsou již mnohem zajímavější téma. Kromě klasických for, while a podobně má Groovy i cykly z Ruby, jako například kolekce.each { blok }, integer.times { blok } a další, které mi osobně přijdou syntakticky mnohem hezčí a čistší:
// syntakticky hezčí náhražka for cyklu
[1, 2, 3, 4, 5].each { print "$it-" }
// prochází
10.times { println "Iteration $it." }
=> 1-2-3-4-5-
=> Iteration 0.
=> Iteration 1.
=> Iteration 2.
=> Iteration 3.
=> Iteration 4.
=> Iteration 5.
=> Iteration 6.
=> Iteration 7.
=> Iteration 8.
=> Iteration 9.
Do proměnné it se automaticky přiřazují jednotlivé položky procházené kolekce. Pokud si místo it přejeme použít proměnnou námi voleného názvu, použijeme konstrukci { nase_promenna -> zbytek bloku }, například takto:
(1..10).each { number -> println number }
To je totéž, co bychom v Ruby bychom zapsali toto:
(1..10).each { |number| puts number }
A v Pythonu pro změnu:
for number in xrange(1, 10): print number
Příště
Tak, a to je pro dnešek vše. V příštím díle stále zůstaneme u vyložených základů Groovy – podíváme na objektový model Groovy, na tvorbu tříd a objektů, možností objektového programování a podobně. V dalších dílech pak plánuji probrat zajímavé projekty v Groovy, jako jsou Grails a Gant a v neposlední řadě také možnosti interakce s Javou.
Odkazy
Související články
Autor článku
Seriál Groovy v příkladech
- Groovy v příkladech: úvod do jazyka
- Groovy v příkladech: objektově orientované programování
-
- Konzultant prodeje (m/ž) - Kopřivnice - ONLINE POHOVOR
- Team leader - programátor JAVA SENIOR - aplikace v dopravě
- Vývojář SW pro ATM systémy
- Application Support Specialist for ATMS (Prague/Vienna)
- INTEGRAČNÍ VÝVOJÁŘ JUNIOR – DLOUHODOBÁ BRIGÁDA
- Specialista technické podpory
-
- Canva: grafika pro firmy a podnikatele
- Zkratky v online komunikaci
- 76 nejčastěji zaměňovaných slov v angličtině
- Vytvořte si web pomocí WordPressu za 20 min.
- Prokreslete se k úspěšné prezentaci
- Firemní korespondence v němčině
Dále u nás najdete
Internet Info Root.cz (www.root.cz)
Informace nejen ze světa Linuxu. ISSN 1212-8309
Copyright © 1998 – 2020 Internet Info, s.r.o. Všechna práva vyhrazena.