typestar

optional y value_or en C++

Quizás-un-valor sin números centinela: std::optional convierte la entrada mala en un no limpio.

#include <optional>
#include <string>

std::optional<int> parse_port(const std::string &text) {
    if (text.empty() ||
        text.find_first_not_of("0123456789") != text.npos) {
        return std::nullopt;
    }
    return std::stoi(text);
}

int port_or_default(const std::string &text) {
    return parse_port(text).value_or(8080);
}

Cómo funciona

  1. parse_port devuelve std::optional<int> — un valor si tiene éxito, std::nullopt si no.
  2. find_first_not_of rechaza cualquier texto con un no-dígito antes de que std::stoi corra siquiera.
  3. value_or(8080) desenvuelve el resultado o cae al valor por defecto en una sola llamada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
307
Tokens
89
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 76 segundos.

Escribe este fragmento

Paso 1 de 3 en Toques modernos; paso 22 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →