¿Qué es un 'Option'?
Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 35 de 66.
En programación, a menudo te encuentras con situaciones en las que un valor puede estar presente o no. Por ejemplo, al buscar un elemento en una lista, se puede encontrar el elemento o puede que no exista en absoluto. Los lenguajes de programación tradicionales suelen utilizar valores especiales como null o -1 para representar la "nada", pero este enfoque puede provocar errores y fallos.
Rust adopta un enfoque diferente con el enum Option<T>. Este es un tipo integrado que representa explícitamente la posibilidad de ausencia. En lugar de adivinar si un valor existe, Rust te obliga a manejar ambos casos de antemano.
El enum Option tiene exactamente dos variantes:
Some(value) // Contiene un valor
None // No contiene ningún valorCuando una función podría no devolver un valor, devuelve un Option. Si hay un valor para devolver, lo envuelve en Some. Si no hay ningún valor, devuelve None.
Esto hace que la posible ausencia sea explícita en el sistema de tipos, evitando que uses accidentalmente un valor que no existe.
Ya has visto Option en acción con el método .get() del hash map: devuelve Some(&value) cuando existe una clave, o None cuando no existe. Este patrón aparece en todo Rust, haciendo que tu código sea más seguro y predecible.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Hoja de referencia
El enum Option<T> representa un valor que podría o no estar presente, evitando errores al usar valores inexistentes.
Tiene dos variantes:
Some(value) // Contiene un valor
None // No contiene ningún valorLas funciones que podrían no devolver un valor utilizan Option. Por ejemplo, el método .get() de un hash map devuelve Some(&value) cuando existe una clave, o None cuando no existe.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Flujo de control avanzado
La expresión 'match'Coincidencia de múltiples valoresCoincidencia de rangosLa expresión 'if let'Bucles como expresionesResumen - Analizador de comandos simple4Agrupando datos con Structs
¿Qué es un Struct?Visión general de los StructsAcceso a los campos de un StructStructs mutablesStructs como parámetros de funcionesStructs de tuplaResumen - Crear un Struct de Libro7Manejo de errores con 'Result'
¿Qué es un 'Result'?Uso de 'match' con 'Result'is_ok() e is_err()Atajos: unwrap y expectEl operador de signo de interrogación '?'Parsing de Strings a númerosResumen - Función de división segura10Closures y funciones anónimas
¿Qué es un Closure?Definir un Closure simpleClosures con parámetrosCapturar el entornoResumen - Closure sumador simple2Introducción a los vectores
¿Qué es un vector?Crear un vectorAñadir elementos con pushAcceder a los elementos de un vectorIterar sobre un vectorIteración mutableEliminar elementosResumen: Rastreador de puntuación básico5Pares clave-valor con Hash Maps
¿Qué es un Hash Map?Crear un Hash MapInsertar pares clave-valorAcceder a los valoresIterar sobre un Hash MapActualizar un valorEliminar un parRepaso: Contador de palabras8Proyecto: Inventario simple de artículos
Configuración del proyectoAgregar un artículoVerificar el stockVender un artículoUniendo todo3Lista de tareas en la línea de comandos
Configuración del proyectoAñadir una tareaVer todas las tareasEliminar una tareaCódigo final6Manejo de ausencia con 'Option'
¿Qué es un 'Option'?Uso de 'match' con 'Option'is_some() e is_none()Desempaquetar un 'Option'El método expectProporcionar un valor por defecto: unwrap_orResumen - Encontrar un elemento