closures
|
|
Ola pessoal, tudo bom? eu entendo o que estes metodos e blocos fazer, agora aonde tem closure, se é que tem mesmo? Muito obrigado, |
|
|
Não sei a definição correta, mas vou tentar passar o que acho.
Mas o segredo para entender é ver o que acontece dentro dos métodos que recebem o bloco. (1..30).primos { |n| puts n } Repare apenas no método primos, veja que ele usa yield para retornar para o contexto interno do bloco. Alguém me corrija por favor! |
|
|
É isso mesmo, closures são códigos que fecham o contexto atual, variaveis locais e podem ser passadas como valor, é o que acontece em Ruby, apesar de somente podermos passar 1 bloco de código, podemos passar quantos objetos do tipo Proc que quisermos como argumentos. |
|
|
Para você que é programador Java tente pensar numa closure como uma chamada de método de uma instância de um anonymous inner class, como fazemos quando implementamos um Listener num evento de Swing. A diferença é que a closure consegue alterar variaveis definidas fora dele. A explicação completa é longe disso mas na prática é um bom começo para entender. |

