Menu
Coddy logo textTech

is_some() e is_none()

Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 37 de 66.

A veces necesitas comprobar si un Option contiene un valor sin extraer realmente dicho valor. Rust proporciona dos métodos convenientes para esto: .is_some() y .is_none().

Ambos métodos devuelven un valor booleano, lo que los hace perfectos para su uso en condiciones if:

let maybe_score = Some(85);

if maybe_score.is_some() {
    println!("We have a score!");
}

if maybe_score.is_none() {
    println!("No score available");
}

El método .is_some() devuelve true si el Option contiene un valor Some, y false si es None. El método .is_none() funciona de la manera opuesta: devuelve true para None y false para Some.

challenge icon

Desafío

Fácil

Recibirás un número como entrada. Crea un Option<i32> que contenga Some(number) si el número es positivo, o None si el número es cero o negativo. Usa .is_some() y .is_none() para verificar el Option e imprimir el mensaje apropiado.

Requisitos:

  • Lee la entrada y conviértela a i32
  • Crea una variable Option<i32>:
    • Si el número es positivo (mayor que 0), asigna Some(number)
    • Si el número es cero o negativo, asigna None
  • Usa .is_some() para verificar si el Option contiene un valor
  • Si .is_some() devuelve true, imprime: Positive number detected
  • Usa .is_none() para verificar si el Option está vacío
  • Si .is_none() devuelve true, imprime: No positive number

Entrada:

  • Un solo número entero (por ejemplo, 42, 0, o -5)

Salida:

  • Si el número es positivo: Positive number detected
  • Si el número es cero o negativo: No positive number

Hoja de referencia

Usa .is_some() para comprobar si un Option contiene un valor:

let maybe_score = Some(85);

if maybe_score.is_some() {
    println!("We have a score!");
}

Usa .is_none() para comprobar si un Option está vacío:

if maybe_score.is_none() {
    println!("No score available");
}

Ambos métodos devuelven valores booleanos (true o false).

Pruébalo tú mismo

use std::io;

fn main() {
    // Leer entrada
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let number: i32 = input.trim().parse().expect("Invalid input");
    
    // TODO: Escribe tu código debajo
    // Crear un Option<i32> basado en si el número es positivo
    
    // Comprobar si el Option es Some e imprimir el mensaje apropiado
    
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow