Builtins y casts en Zig
Los @-builtins: reflexión sobre tipos, y casts que siempre se escriben completos.
const std = @import("std");
pub fn main() void {
// @-builtins are the compiler's own function library.
const reading: f32 = 11.2;
std.debug.print("type: {s}\n", .{@typeName(@TypeOf(reading))});
std.debug.print("f64 takes {d} bytes\n", .{@sizeOf(f64)});
// Casts are spelled out; nothing converts silently.
const feet: i32 = 11;
const exact: f32 = @floatFromInt(feet);
std.debug.print("as float: {d:.1}\n", .{exact});
std.debug.print("widened: {d}\n", .{@as(i64, @intCast(feet))});
}
Cómo funciona
@TypeOfy@typeNameinspeccionan tipos como valores.@sizeOf(f64)responde en bytes en tiempo de compilación.@floatFromInty@intCasthacen las conversiones que Zig se niega a hacer en silencio.
Palabras clave y builtins usados aquí
constf32f64fni32i64pubvoid
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 485
- Tokens
- 129
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 119 segundos.
Paso 3 de 3 en comptime; paso 18 de 27 en Fundamentos del lenguaje.