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