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