Funciones básicas de una colección

Un popurrí con algunas funciones útiles que traen las colecciones de Scala, como el método isEmpty, el nonEmpty, el length... En siguientes vídeos os hablaré de las funciones importantes a ritmo de un vídeo por una o dos por episodio.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Cuando trabajamos con colecciones en Scala, una de las estructuras más básicas y útiles que podemos utilizar es el array. Un array es una colección indexada, lo que significa que podemos acceder a sus elementos mediante una posición específica. Crear un array es muy sencillo y se parece bastante a cómo se manejan los arrays en otros contextos, como el parámetro main en Scala.

Por ejemplo, podemos definir un array de frutas con la siguiente sintaxis:

val frutas = Array("pera", "manzana", "naranja", "albaricoque")

Lo interesante es que no necesitamos especificar explícitamente el tipo del array. Scala infiere que, dado que todos los elementos son cadenas de texto, el array es de tipo Array[String]. Si mezclamos tipos, como un número y un booleano, Scala elevará el tipo al más genérico común, que en este caso sería AnyVal. Esta inferencia de tipos busca siempre el tipo más específico posible dentro de la jerarquía, evitando que los arrays sean demasiado genéricos sin necesidad.

Aunque la inferencia automática es muy cómoda, en proyectos públicos o colaborativos puede ser recomendable declarar explícitamente los tipos para facilitar la comprensión y evitar confusiones, especialmente cuando no se trabaja con un IDE que ayude a deducirlos.

Una vez creado el array, podemos acceder a sus elementos usando el método apply. Por ejemplo, frutas.apply(0) nos devuelve "pera". Sin embargo, en Scala existe una característica especial: el método apply se puede invocar simplemente usando paréntesis después del nombre del array, sin escribir explícitamente apply. Por eso, frutas(1) es equivalente a frutas.apply(1) y nos devuelve "manzana". Esta sintaxis hace que el acceso a elementos sea más limpio y natural.

Además de acceder a elementos, los arrays cuentan con métodos útiles para manipular y consultar sus propiedades. Por ejemplo, length nos devuelve el tamaño del array. En Scala, cuando un método no tiene parámetros, podemos omitir los paréntesis al llamarlo, por lo que frutas.length es válido y nos indica que el array tiene cuatro elementos. Eso sí, hay que tener cuidado con esta omisión para evitar problemas en ciertas situaciones.

También podemos verificar si un array está vacío con el método isEmpty, que devuelve true o false. Complementariamente, existe el método nonEmpty, que es justo lo contrario y puede hacer que nuestro código sea más legible cuando queremos asegurarnos de que una colección contiene elementos.

Scala nos ofrece además la posibilidad de convertir colecciones entre distintos tipos. Por ejemplo, podemos transformar un array en una lista, un vector, un conjunto o incluso un mapa, dependiendo de nuestras necesidades. Estas conversiones son muy útiles para aprovechar las características específicas de cada tipo de colección.

Entre los métodos que facilitan la búsqueda dentro de un array está indexOf, que nos devuelve la posición de un elemento dado. Por ejemplo, frutas.indexOf("pera") nos devolverá 0, indicando que pera está en la primera posición.

Finalmente, una función muy poderosa en el manejo de colecciones es map. Esta función nos permite transformar cada elemento de una colección en otro elemento, posiblemente de un tipo diferente, aplicando una función a cada uno. Aunque map merece una explicación más detallada, podemos adelantar que es fundamental para trabajar con colecciones de manera funcional y elegante en Scala. En comparación, aunque existe foreach, map es más adecuado cuando queremos obtener una nueva colección transformada, no solo realizar una acción por cada elemento.

En resumen, los arrays en Scala son colecciones indexadas con una sintaxis sencilla para su creación y acceso, cuentan con métodos para consultar su tamaño y estado, permiten conversiones entre tipos de colecciones y ofrecen funciones como map para transformar sus elementos de forma funcional. Estas características hacen que trabajar con colecciones en Scala sea una experiencia potente y expresiva.

Lista de reproducción
  1. 1
    Introducción a Scala
    6 minutos
  2. 2
    Instalar Scala
    6 minutos
  3. 3
    Primeros pasos con el intérprete
    5 minutos
  4. 4
    Variables con val y var
    7 minutos
  5. 5
    Declarando funciones
    7 minutos
  6. 6
    Inciso sobre Units e iguales
    5 minutos
  7. 7
    Presentación de los objetos singleton
    6 minutos
  8. 8
    Editando y compilando archivos
    8 minutos
  9. 9
    Descargar e instalar Scala IDE
    6 minutos
  10. 10
    Proyectos y worksheets en Scala IDE
    7 minutos
  11. 11
    El condicional IF en Scala
    8 minutos
  12. 12
    Un caso sencillo de MATCH
    6 minutos
  13. 13
    Bucles WHILE y DO-WHILE (y String Interpolation)
    7 minutos
  14. 14
    El sistema de tipos
    7 minutos
  15. 15
    Colecciones
    9 minutos
  16. 16
    Funciones básicas de una colección
    8 minutos
  17. 17
    El map (es sensacional)
    8 minutos
  18. 18
    Flatten y flatMap
    9 minutos
  19. 19
    Sets, parte 1 de 3: Set
    8 minutos
  20. 20
    Sets, parte 2 de 3: Sets mutables
    4 minutos
  21. 21
    Sets, parte 3 de 3: SortedSet
    6 minutos
  22. 22
    Mapas (parte 1 de 2): Creando mapas
    9 minutos
  23. 23
    Mapas (parte 2 de 2): Operaciones
    8 minutos
  24. 24
    foreach y for
    8 minutos