Escolar Documentos
Profissional Documentos
Cultura Documentos
A seguir veremos como começar a trabalhar com essa linguagem e seu console
próprio.
Instalação
JAVA_HOME={DIRETORIO_DE_INSTALAÇÃO_DO_JAVA}
GROOVY_HOME={DIRETORIO_DE_INSTALAÇÃO_DO_GROVY}
export JAVA_HOME
export GROOVY_HOME
export PATH=$PATH:$JAVA_HOME/bin:$GROOVY_HOME/bin:$GRAILS_HOME/bin
Esse comando deve ter como resultado a versão do Groovy que foi instalada,
como exibido a seguir:
Groovy Version: 2.4.5 JVM: 1.8.0_40 Vendor: Oracle Corporation OS: xxxx
Groovy console
Após digitar o código clique no ícone executar (run) ou utilize o atalho Ctrl +
R e perceba que a saída é mostrada no quadro inferior do console, conforme
mostra a Figura 3.
estática.
int i = 10
println(i.class)
long l = 100000000000000000000
println(l.class)
d = 10.0
println(d.class)
Note que a saída deste código, apresentada a seguir, não tem definido os tipos
explicitamente para as variáveis “d” e “s”, pois o Groovy inferiu os seus tipos:
=> class java.lang.Integer
=> class java.lang.Long
=> class java.math.BigDecimal
=> class java.lang.String
Strings no Groovy
a = 1
b = 2
c = 3
duplas = 'Hello, sou uma string delimitada por aspas duplas, aceito
interpolação(concatenação) de variáveis. ${a}, ${b}, ${c}'
stringComQuebraDeLinhas = """Oi,
sou uma string delimitada por três aspas duplas seguidas.
Também posso interpolar valores mas,
a minha principal vantagem é que posso ser quebrada em várias linhas"""
A primeira string que está entre aspas simples é a que usa menos recursos: ela
é mais amplamente usada no desenvolvimento de aplicações onde o
desempenho é algo crítico, já que esse tipo de string utiliza menos memória.
StringComQuebraDeLinhas = “Oi,”
+ “sou uma string delimitada por três aspas duplas seguidas.”
+ “Também posso interpolar valores mas,”
+ “a minha principal vantagem é que posso ser quebrada em várias linhas”
Uma vantagem do Groovy usar classes do próprio Java é que todos os métodos
das suas classes estão, naturalmente, disponíveis. Veja na Listagem 6 um
código executando alguns métodos conhecidos da classe java.lang.String do Java.
simples = 'olá, sou uma string simples delimitada por aspas simples'
println(simples.indexOf('aspas'))
println(simples.length())
println(simples.substring(13))
Estruturas de controle
if / else
int idade = 19
if(variavel){
println("essa variável foi avaliada como verdadeira. O seu valor é =
${variavel}");
}else{
println("essa variável foi avaliada como falsa. O seu valor é =
${variavel}");
}
Operador ternário
int idade = 19
idade > 18 ? println("você já é adulto"):println("você não é adulto")
Switch
switch(variavel_a_ser_avaliada){
case [valor_1]:
[bloco_de_codigo]
break
case [valor_2]:
[bloco_de_codigo]
break
case [valor_3]:
[bloco_de_codigo]
break
default:
[bloco_de_codigo]
O bloco switch recebe uma variável e compara o valor desta com os valores
informados nos blocos case. Note na Listagem 11 um exemplo de uso dessa
estrutura.
valor = 5
switch(valor){
case 1:
println("sou igual a um")
break
case 2:
println("sou igual a dois")
break
case 3:
println("sou igual a três")
break
case 4:
println("sou igual a quatro")
break
case 5:
println("sou igual a cinco")
break
default:
println("não sou nenhum desses valores")
}
Caso nenhum dos blocos case retorne verdadeiro, o bloco de código atrelado a
instrução default será executada, como mostra o exemplo da Listagem 12.
valor = 10
switch(valor){
case 1:
println("sou igual a um")
break
case 2:
println("sou igual a dois")
break
case 3:
println("sou igual a três")
break
case 4:
println("sou igual a quatro")
break
case 5:
println("sou igual a cinco")
break
default:
println("não sou nenhum desses valores")
}
valor = 1
switch(valor){
case 1:
println("sou igual a um")
case 2:
println("sou igual a dois")
case 3:
println("sou igual a três")
case 4:
println("sou igual a quatro")
case 5:
println("sou igual a cinco")
default:
println("não sou nenhum desses valores")
}
Note agora na saída apresentada a seguir que todos os blocos case, inclusive o
bloco default, foram executados:
=> sou igual a um
=> sou igual a dois
=> sou igual a três
=> sou igual a quatro
=> sou igual a cinco
=> não sou nenhum desses valores
Isso acontece porque após entrar em qualquer bloco case o fluxo só irar parar
após uma instrução break ser encontrada.
Estruturas de repetição
While
while(condicao){
[bloco_de_codigo_a_ser_executado]
}
Veja agora na Listagem 15 o uso dessa estrutura para imprimir os algarismos
pares encontrados de 1 a 20.
int i = 1
if(i % 2 == 0){
print "${i} "
}
i = i + 1;
if(!(i % 2 == 0)){
print("${i}, ");
}
O for também pode ser usado facilmente para percorrer objetos que representem
intervalos como os ranges. Ranges são intervalos definidos de objetos
numéricos, e podem ser definidos de duas formas:
intervalo1 = 1..<10
intervalo2 = 1..10
O operador “<” pode ser usado para indicar que o último número não deve ser
incluído. O range ou intervalo que foi armazenado na variável intervalo1 vai de
1 até 9, enquanto o armazenado na variável intervalo2 varia de 1 até 10.
Veja na Listagem 17 como percorrer usando a instrução for sobre esses ranges.
intervalo1 = 1..15
for(int i = 0; i < intervalo1.size(); i++){
print "${intervalo1[i]}, "
}
intervalo1 = 1..15
for(i in intervalo1){
print "${i}, "
}
Note que neste caso não foi necessário definir uma condição de parada de
execução, nem mesmo uma seção para incremento da variável. Isso foi
encapsulado pela estrutura for. Ela apenas passou a pegar cada elemento no
range e armazenar na variável i, que foi impressa até que não houvessem mais
valores para na variável intervalo1 a serem mostrados.
Essa foi uma breve introdução aos recursos da linguagem Groovy. Por essa
pequena explanação com certeza já nota-se algumas vantagens em se utilizar o
Groovy: uma delas é o fato de que todo código Groovy é executado pela JVM,
amplamente difundida atualmente. Outra vantagem considerável é que código
Java pode acessar o código Groovy e vice-versa, podendo incluir algumas
instruções Java nas classes Groovy. Ainda outro ponto importante é a tipagem
forte e dinâmica da linguagem e a sua simplicidade.