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
Reading :: union { f32, string }guarda una variante y recuerda cuál.switch v in res el switch de tipos: cada case recibe la carga tipada.Reading(f32(21.5))construye una variante con conversión explícita.
Palabras clave y builtins usados aquí
casef32importinpackageprocstringswitchunion
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.
Paso 3 de 3 en Structs, enums y unions; paso 15 de 27 en Fundamentos del lenguaje.