Les funcions anònimes, també conegudes com a funcions lambda, són funcions que no tenen un nom explícit. Són molt útils quan necessitem definir una funció ràpidament per passar-la com a argument a una altra funció, especialment en programació funcional.
Conceptes Clau
- Definició de Funcions Anònimes: Una funció anònima es defineix utilitzant la sintaxi
(paràmetres) => expressió
. - Ús Comú: Les funcions anònimes s'utilitzen sovint amb col·leccions i funcions d'ordre superior.
- Sintaxi Reduïda: Scala permet una sintaxi molt concisa per a les funcions anònimes, especialment quan es treballa amb col·leccions.
Sintaxi de les Funcions Anònimes
La sintaxi bàsica d'una funció anònima és la següent:
Exemple Bàsic
En aquest exemple, suma
és una funció anònima que pren dos paràmetres a
i b
i retorna la seva suma.
Funcions Anònimes amb Col·leccions
Les funcions anònimes són especialment útils quan es treballa amb col·leccions. Per exemple, podem utilitzar una funció anònima amb el mètode map
per transformar una llista:
val llista = List(1, 2, 3, 4) val llistaDoblada = llista.map(x => x * 2) println(llistaDoblada) // Sortida: List(2, 4, 6, 8)
Sintaxi Reduïda
Scala permet una sintaxi més concisa per a les funcions anònimes. Per exemple, podem ometre els parèntesis si només hi ha un paràmetre:
val llista = List(1, 2, 3, 4) val llistaDoblada = llista.map(_ * 2) println(llistaDoblada) // Sortida: List(2, 4, 6, 8)
En aquest cas, _
representa el paràmetre de la funció anònima.
Exercicis Pràctics
Exercici 1: Filtrar Nombres Parells
Escriu una funció anònima que filtri els nombres parells d'una llista.
val nombres = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val nombresParells = nombres.filter(_ % 2 == 0) println(nombresParells) // Sortida: List(2, 4, 6, 8, 10)
Exercici 2: Transformar una Llista de Strings
Escriu una funció anònima que transformi una llista de strings a la seva longitud.
val paraules = List("Scala", "és", "genial") val longituds = paraules.map(_.length) println(longituds) // Sortida: List(5, 2, 6)
Exercici 3: Ordenar una Llista de Tuples
Escriu una funció anònima que ordeni una llista de tuples (Int, String)
pel primer element de la tupla.
val tuples = List((3, "tres"), (1, "un"), (2, "dos")) val tuplesOrdenades = tuples.sortBy(_._1) println(tuplesOrdenades) // Sortida: List((1, "un"), (2, "dos"), (3, "tres"))
Errors Comuns
- Oblidar el Tipus de Paràmetres: Quan es defineixen funcions anònimes, és important especificar els tipus de paràmetres si no es poden inferir automàticament.
- Ús Incorrecte de
_
:_
només es pot utilitzar per a funcions anònimes amb un sol paràmetre. Per a més paràmetres, cal utilitzar(paràmetres) => expressió
.
Resum
Les funcions anònimes són una eina poderosa en Scala, especialment quan es treballa amb col·leccions i funcions d'ordre superior. La seva sintaxi concisa permet escriure codi més net i llegible. En aquest tema, hem après la sintaxi bàsica de les funcions anònimes, com utilitzar-les amb col·leccions i hem practicat amb alguns exercicis pràctics.
Curs de Programació en Scala
Mòdul 1: Introducció a Scala
- Introducció a Scala
- Configuració de l'Entorn de Desenvolupament
- Conceptes Bàsics de Scala: Sintaxi i Estructura
- Variables i Tipus de Dades
- Operacions Bàsiques i Expressions
Mòdul 2: Estructures de Control i Funcions
- Declaracions Condicionals
- Bucles i Iteracions
- Funcions i Mètodes
- Funcions d'Ordre Superior
- Funcions Anònimes
Mòdul 3: Col·leccions i Estructures de Dades
- Introducció a les Col·leccions
- Llistes i Arrays
- Conjunts i Mapes
- Tuples i Options
- Coincidència de Patrons
Mòdul 4: Programació Orientada a Objectes en Scala
- Classes i Objectes
- Herència i Traits
- Classes Abstractes i Classes Case
- Objectes Companys
- Objectes Singleton
Mòdul 5: Programació Funcional en Scala
- Immutabilitat i Funcions Pures
- Estructures de Dades Funcionals
- Monads i Functors
- For-Comprehensions
- Gestió d'Errors en la Programació Funcional
Mòdul 6: Conceptes Avançats de Scala
- Conversions i Paràmetres Implícits
- Classes de Tipus i Polimorfisme
- Macros i Reflexió
- Concurrència en Scala
- Introducció a Akka