Método x closure

145
-1

Published on

Entenda as principais diferenças entre Método e Closure no Groovy!

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
145
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Método x closure

  1. 1. MÉTODO X CLOSURE ENTENDENDO AS CLOSURES NO GROOVY – PARTE 1 println "Jonatas Emidio"
  2. 2. INÍCIO DA DÚVIDA Uma das coisas que mais tem me chamado a atenção no groovy é o seu suporte à closures. Logo passei a utiliza-las no lugar dos métodos, já que a principio a função era a mesma. No entanto me surgiu uma dúvida… Será que eu ganho ou perco desempenho utilizando- as na aplicação?
  3. 3. A BUSCA Iniciei as consultas no google e não tive muito sucesso, em seguida postei minha duvida no grails brasil e pouco depois já tinham várias respostas. Percebi que o conteúdo que estava sendo gerado era muito rico e tive a ideia de compilar todas essas informações em um post de fácil entendimento.
  4. 4. A SACADA Pois bem, para começar “métodos e closures” podem até trazer o mesmo resultado, mas eles não são a mesma coisa. Este artigo será dividido em 3 posts, pois o mesmo possui bastante conteúdo. Entendendo as Closures no Groovy; Método X Closure; Teste de desempenho com Closures e Métodos;
  5. 5. GROOVY IN ACTION Segundo o Livro Groovy in action: closures são importantes, muito importantes, são de longe um dos recursos mais importantes do groovy. Closure é um bloco de codígo encapsulado em um objeto. Definição tambem do Groovy in action.
  6. 6. EXEMPLO 1 Para os que estão acostumados com desenvolvimento java e já teve a oport unidade de escrever uma closure ,deve ter notado que seu fluxo lógico é diferente do tradicional, mas assim que nos acostumamos com o seu estilo de escrita os algoritmos fluem como água. Um simples exemplo de closure utilizado na documentação do groovy é o se guinte: <font color="#4a86e8">def </font>clos = { <b>print </b>“Hello”} <font color="#00ff00">// - clos2: Onde a closure recebera algum valor na sua chamad <font color="#4a86e8">def </font>clos2 = {<b>print </b>it}. clos2(‘Hello’) /*Onde o
  7. 7. TRABALHANDO COM LISTAS Também da documentação do groovy, temos dois exemplos bem interessantes de closures para listas. Suponha que você precise varrer uma determinada lista e aplicar alguma lógica em cada item antes de inseri-los em outra lista. Pois bem… Temos basicamente duas formas simples de fazerisso no groovy.
  8. 8. LISTA: IDEIA 1 1 – Podemos utilizar o collect aplicando a logica para cada item iterado: Definição: Foi criada uma lista com as vogais e uma lista vazia que rece berá o maiúsculo de cada vogal. Neste caso o collect é utilizado para aplicar a logica ao it (variável default no groovy para closures com apenas um par âmetro – neste caso uma outra lista) e inseri-lo na lista passada por pa râmetro. Logo no final teremos a seguinte lista ["A", "E" , "I", "O", "U"] <font color="#4a86e8"><br></font> <font color="#4a86e8">def </font>list = ['a','e','i''o','u'] <font color="#4a86e8">def </font>newList = [] list.<font color="#4a86e8">collect</font>( newList ) { it.toUpperCase() } <br>
  9. 9. LISTA: IDEIA 2 2 – Digamos que a logica a ser aplicada a cada item é um pouco mais complicada, também podemos encapsula-la em outra closure. <font color="#4a86e8">def </font>list = ['a','e','i','o','u'] <font color="#4a86e8">def </font>newList = [] <font color="#4a86e8">def </font>closAux = { it.toUpperCase list.<font color="#4a86e8">collect</font>( newList, closAux Definição: Neste caso estamos trabalhando com a mesma lógica, mas aqui p odemos aproveitar a segunda closure para encapsular uma lógica mais comp lexa a ser atribuída a cada atributo da lista iterada. Aqui, temos uma nova closure criada que atribui uma lógica (no it) para no final retorna-lo. Logo em seguida podemos chamar o collect passand o a nova lista e a closure. Pronto, a logica da closure passada por parâ metro será utilizada para cada item iterado da lista e atribuindo a nova lista.
  10. 10. FIM Por fim. É claro que não paramos por aqui. Closures no groovy pode se transformar em um mundo quando utilizamos a boa e velha lógica de programação em conjunto com os conceitos da linguagem. Lembrando que este post foi só um esclarecimento de closure para dar continuidade nos próximos posts.
  11. 11. CONTATOS jonatasemidio@gmail.com http://jonatasemidio.com/ http://santograils.org/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×