En este tema, exploraremos dos conceptos fundamentales en Scala: las tuplas y las opciones. Ambos son herramientas poderosas que nos permiten manejar datos de manera eficiente y segura.

Tuplas

¿Qué es una Tupla?

Una tupla es una estructura de datos que puede contener un número fijo de elementos, cada uno de un tipo diferente. Las tuplas son útiles cuando necesitas agrupar varios valores en una sola unidad lógica.

Creación de Tuplas

En Scala, puedes crear una tupla utilizando la sintaxis (valor1, valor2, ...). Aquí hay algunos ejemplos:

val tupla2 = (1, "Scala") // Tupla de 2 elementos
val tupla3 = (1, "Scala", true) // Tupla de 3 elementos

Acceso a los Elementos de una Tupla

Puedes acceder a los elementos de una tupla utilizando la notación _n, donde n es el índice del elemento (empezando desde 1):

val tupla = (1, "Scala", true)
val primerElemento = tupla._1 // 1
val segundoElemento = tupla._2 // "Scala"
val tercerElemento = tupla._3 // true

Ejemplo Práctico

Supongamos que queremos almacenar información sobre un libro: título, autor y año de publicación. Podemos usar una tupla para esto:

val libro = ("El Quijote", "Miguel de Cervantes", 1605)
println(s"Título: ${libro._1}, Autor: ${libro._2}, Año: ${libro._3}")

Ejercicio 1: Creación y Acceso a Tuplas

Instrucciones:

  1. Crea una tupla que contenga tu nombre, tu edad y tu ciudad.
  2. Imprime cada elemento de la tupla.

Solución:

val miTupla = ("Juan", 30, "Madrid")
println(s"Nombre: ${miTupla._1}")
println(s"Edad: ${miTupla._2}")
println(s"Ciudad: ${miTupla._3}")

Opciones

¿Qué es una Opción?

Una opción (Option) es un contenedor que puede tener un valor (Some) o no tenerlo (None). Es una forma segura de manejar valores que pueden ser nulos o inexistentes.

Creación de Opciones

Puedes crear una opción utilizando Some(valor) o None:

val algunaOpcion: Option[Int] = Some(42)
val ningunaOpcion: Option[Int] = None

Acceso a los Valores de una Opción

Para acceder al valor de una opción, puedes usar getOrElse, que proporciona un valor por defecto si la opción es None:

val valor = algunaOpcion.getOrElse(0) // 42
val valorPorDefecto = ningunaOpcion.getOrElse(0) // 0

Ejemplo Práctico

Supongamos que estamos buscando un usuario en una base de datos. Si el usuario existe, devolvemos su nombre; si no, devolvemos un mensaje de error:

def buscarUsuario(id: Int): Option[String] = {
  if (id == 1) Some("Juan")
  else None
}

val usuario = buscarUsuario(1).getOrElse("Usuario no encontrado")
println(usuario) // "Juan"

val usuarioInexistente = buscarUsuario(2).getOrElse("Usuario no encontrado")
println(usuarioInexistente) // "Usuario no encontrado"

Ejercicio 2: Manejo de Opciones

Instrucciones:

  1. Crea una función que reciba un número y devuelva Some(número) si el número es positivo, o None si es negativo o cero.
  2. Usa la función y maneja el resultado con getOrElse.

Solución:

def positivoONada(n: Int): Option[Int] = {
  if (n > 0) Some(n)
  else None
}

val resultadoPositivo = positivoONada(5).getOrElse("No es positivo")
println(resultadoPositivo) // 5

val resultadoNegativo = positivoONada(-3).getOrElse("No es positivo")
println(resultadoNegativo) // "No es positivo"

Conclusión

En esta sección, hemos aprendido sobre las tuplas y las opciones en Scala. Las tuplas nos permiten agrupar múltiples valores en una sola unidad lógica, mientras que las opciones nos ayudan a manejar valores que pueden ser nulos de manera segura. Estos conceptos son fundamentales para escribir código más limpio y robusto en Scala.

En el próximo módulo, exploraremos más sobre las estructuras de datos en Scala, incluyendo listas y arreglos. ¡Sigue adelante!

© Copyright 2024. Todos los derechos reservados