typestar

Unions en Odin

Una lectura, dos formas: temperatura cuando el sensor funciona, razón cuando no.

package main

import "core:fmt"

// One variant at a time: a temperature, or the reason there is none.
Reading :: union { f32, string }

report :: proc(r: Reading) {
    switch v in r {
    case f32:
        fmt.printfln("steady at %.1f C", v)
    case string:
        fmt.println("sensor down:", v)
    }
}

main :: proc() {
    report(Reading(f32(21.5)))
    report(Reading("loose wire"))
}

Cómo funciona

  1. Reading :: union { f32, string } guarda una variante y recuerda cuál.
  2. switch v in r es el switch de tipos: cada case recibe la carga tipada.
  3. Reading(f32(21.5)) construye una variante con conversión explícita.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
352
Tokens
85
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 78 segundos.

Escribe este fragmento

Paso 3 de 3 en Structs, enums y unions; paso 15 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →

Unions en otros lenguajes