sexta-feira, abril 22, 2011

Dicas Rápidas de Groovy para quem vem do Java




1. Basico

a) Nao precisa de ponto-e-virgula;
b) A ultima linha de um metodo é o que ele retorna. Mas botar o return ajuda a entender melhor;
2. Collections


// List
a = [1, 2, 2]
a.each {println it}
println a.class // imprime java.util.ArrayList
a = []; a << "foo"; (adiciona "foo" na lista)

// Set
a = [1, 2, 2] as Set
a.each {println it}
println a.class // imprime java.util.HashSet

// Map
a = ["um":1, "dois":2]
a.each {println "$it.key = $it.value"}
println a.class // retorna null (?)




3. Loops

l = 'a'..'c' // define array [a, b, c]

l.each {print it.toUpperCase()} // imprime ABC

l = l.collect {it = "x"}
// mesmo que each, mas RETORNA objeto alterado. O each nao.

l.eachWithIndex {item, i -> println "$i) $item"} // imprime 0) a 1) b 2) c

def linhas = """
rafael,29
joao
maria, 24
"""
linhas.eachLine {println it}

5.upto(10) {print it} // 5678910

5.downto(1) {print it} // 54321

3. Asserts/Try/Catch

try {
def quadrado = {it * it}(3)
quadrado-- // adicao de bug...
assert quadrado == 9: "o quadrado de 3 deve ser nove!!"
} catch (AssertionError e) {
print "Erro na asserção..."
}


-1. Bônus...

// pega ultimo elemento
print a[-1]

// Imitando JSON (quase-json, hehe)
def pessoas = [
['nome':'rafael', 'idade':29],
['nome':'joao', 'idade':23]
]
pessoas.each { p ->
println "$p.nome tem $p.idade anos"
}

// regex basico com if ternario
print "rafael" ==~ /r.*/ ? "Fez Match!" : "Nao fez..."

// operador elvis (?)
def a = "foo"
print a?.toUpperCase() // imprime FOO
a = null
print a?.toUpperCase() // imprime null, mas nao da nullpointer

// executa coisa no SO nativo (linha de comando)
print "ls".execute().text

// chama construtor e já poupula objeto
def p = new Pessoa([nome: "joao", idade: 23])

// metodo call()
def chamaPassandoQuatro (minhaClosure) {  minhaClosure.call(4) }
chamaPassandoQuatro({  print it * it })






Se lhe foi útil, deixe um comentário...não precisa de login...

Nenhum comentário:

Postar um comentário