Introducció a les Closures
Les closures són una característica poderosa i flexible de Groovy que permeten definir blocs de codi que poden ser passats com a arguments, retornats des de funcions o assignats a variables. Les closures són similars a les funcions anònimes o lambdas en altres llenguatges de programació.
Conceptes Clau
- Definició de Closure: Una closure és un bloc de codi que pot ser executat més tard.
- Sintaxi: Les closures es defineixen utilitzant les claus
{}
. - Paràmetres: Les closures poden acceptar paràmetres, que es defineixen abans de l'operador
->
. - Context: Les closures poden accedir a variables del seu context envoltant.
Sintaxi Bàsica
Closures amb Paràmetres
Closures amb Múltiples Paràmetres
Accés al Context Envoltant
Exemples Pràctics
Iteració amb Closures
Les closures són especialment útils per a iterar sobre col·leccions.
Filtratge amb Closures
def llista = [1, 2, 3, 4, 5] def parells = llista.findAll { it % 2 == 0 } println parells // Sortida: [2, 4]
Transformació amb Closures
def llista = [1, 2, 3, 4, 5] def quadrats = llista.collect { it * it } println quadrats // Sortida: [1, 4, 9, 16, 25]
Exercicis Pràctics
Exercici 1: Crear una Closure Simple
Descripció: Defineix una closure que imprimeixi "Benvingut a Groovy!".
Exercici 2: Closure amb Paràmetres
Descripció: Defineix una closure que accepti un nom com a paràmetre i imprimeixi "Hola, [nom]!".
Exercici 3: Filtrar una Llista
Descripció: Utilitza una closure per filtrar una llista de nombres i obtenir només els nombres imparells.
def nombres = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def imparells = nombres.findAll { it % 2 != 0 } println imparells // Sortida: [1, 3, 5, 7, 9]
Exercici 4: Transformar una Llista
Descripció: Utilitza una closure per transformar una llista de nombres multiplicant cada element per 10.
def nombres = [1, 2, 3, 4, 5] def multiplicats = nombres.collect { it * 10 } println multiplicats // Sortida: [10, 20, 30, 40, 50]
Errors Comuns i Consells
- Oblidar Executar la Closure: Recorda que definir una closure no l'executa. Has de cridar-la explícitament amb
closure()
. - Paràmetres Incorrectes: Assegura't que el nombre de paràmetres en la definició de la closure coincideixi amb el nombre de paràmetres passats en la crida.
- Accés al Context: Les closures poden accedir a variables del seu context envoltant, però tingues en compte que modificar aquestes variables pot tenir efectes secundaris inesperats.
Resum
En aquesta secció, hem après què són les closures en Groovy, com es defineixen i utilitzen, i hem vist diversos exemples pràctics. Les closures són una eina poderosa per a la programació funcional i poden simplificar molt el codi, especialment quan es treballa amb col·leccions. Amb la pràctica, les closures es convertiran en una part natural del teu repertori de programació en Groovy.
Curs de Programació Groovy
Mòdul 1: Introducció a Groovy
Mòdul 2: Sintaxi i Característiques del Llenguatge Groovy
Mòdul 3: Programació Orientada a Objectes en Groovy
Mòdul 4: Característiques Avançades de Groovy
Mòdul 5: Groovy en la Pràctica
- Entrada/Sortida de Fitxers
- Treballant amb XML i JSON
- Accés a Bases de Dades
- Desenvolupament Web amb Groovy
Mòdul 6: Proves i Depuració
Mòdul 7: Ecosistema i Eines de Groovy
- Eina de Construcció Gradle
- Framework de Proves Spock
- Framework Grails
- Altres Llibreries i Eines de Groovy
Mòdul 8: Millors Pràctiques i Temes Avançats
- Estil de Codi i Convencions
- Optimització del Rendiment
- Consideracions de Seguretat
- Concurrència en Groovy