En aquest tema, explorarem dues de les col·leccions més utilitzades en Scala: les llistes (List
) i els arrays (Array
). Aprendrem com crear-les, manipular-les i utilitzar-les en diferents contextos.
Objectius d'Aprenentatge
- Entendre la diferència entre
List
iArray
. - Aprendre a crear i inicialitzar llistes i arrays.
- Manipular elements dins de llistes i arrays.
- Utilitzar les operacions comunes disponibles per a aquestes col·leccions.
Llistes en Scala
Què és una Llista?
Una List
en Scala és una col·lecció immutable que manté els elements en un ordre seqüencial. Les llistes són molt utilitzades en la programació funcional per la seva immutabilitat i facilitat d'ús.
Creació d'una Llista
Accés als Elements
Operacions Comunes
-
Afegir Elements: Com que les llistes són immutables, afegir un element crea una nova llista.
val mésFruits = "Mango" :: fruits // List("Mango", "Poma", "Plàtan", "Taronja")
-
Concatenar Llistes:
val altresFruits = List("Kiwi", "Maduixa") val totsElsFruits = fruits ::: altresFruits // List("Poma", "Plàtan", "Taronja", "Kiwi", "Maduixa")
-
Mapejar Elements:
val fruitsEnMajúscules = fruits.map(_.toUpperCase) // List("POMA", "PLÀTAN", "TARONJA")
Exemple Pràctic
Arrays en Scala
Què és un Array?
Un Array
en Scala és una col·lecció mutable que manté els elements en un ordre seqüencial. Els arrays permeten l'accés i la modificació dels elements per índex.
Creació d'un Array
Accés i Modificació dels Elements
Operacions Comunes
-
Afegir Elements: Els arrays tenen una mida fixa, per tant, no es poden afegir elements directament. Cal crear un nou array.
val mésNúmeros = números :+ 6 // Array(10, 2, 3, 4, 5, 6)
-
Concatenar Arrays:
val altresNúmeros = Array(6, 7, 8) val totsElsNúmeros = números ++ altresNúmeros // Array(10, 2, 3, 4, 5, 6, 7, 8)
-
Mapejar Elements:
val númerosDobles = números.map(_ * 2) // Array(20, 4, 6, 8, 10)
Exemple Pràctic
val noms = Array("Anna", "Bernat", "Carla") val nomsEnMinúscules = noms.map(_.toLowerCase) // Array("anna", "bernat", "carla")
Comparació entre Llistes i Arrays
Característica | List | Array |
---|---|---|
Immutabilitat | Sí | No |
Mida | Dinàmica | Fixa |
Accés per Índex | No (només cap i cua) | Sí |
Modificació d'Elements | No | Sí |
Ús Comú | Programació funcional | Programació imperativa |
Exercicis Pràctics
Exercici 1: Crear i Manipular una Llista
- Crea una llista de números de l'1 al 5.
- Afegeix el número 6 al principi de la llista.
- Concatena la llista amb una altra llista que contingui els números 7, 8 i 9.
- Mapeja la llista resultant per obtenir els quadrats dels números.
Solució
val números = List(1, 2, 3, 4, 5) val mésNúmeros = 6 :: números val altresNúmeros = List(7, 8, 9) val totsElsNúmeros = mésNúmeros ::: altresNúmeros val quadrats = totsElsNúmeros.map(n => n * n) // List(36, 1, 4, 9, 16, 25, 49, 64, 81)
Exercici 2: Crear i Manipular un Array
- Crea un array de noms amb els valors "Joan", "Maria" i "Pere".
- Canvia el primer element a "Anna".
- Afegeix el nom "Laura" al final de l'array.
- Mapeja l'array resultant per obtenir els noms en majúscules.
Solució
val noms = Array("Joan", "Maria", "Pere") noms(0) = "Anna" val mésNoms = noms :+ "Laura" val nomsEnMajúscules = mésNoms.map(_.toUpperCase) // Array("ANNA", "MARIA", "PERE", "LAURA")
Conclusió
En aquesta secció, hem après les diferències clau entre les llistes i els arrays en Scala, com crear-los, accedir-hi i manipular-los. Les llistes són immutables i més adequades per a la programació funcional, mentre que els arrays són mutables i més adequats per a la programació imperativa. Amb aquests coneixements, estàs preparat per utilitzar aquestes col·leccions en els teus projectes Scala.
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