typestar

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

  1. @TypeOf y @typeName inspeccionan tipos como valores.
  2. @sizeOf(f64) responde en bytes en tiempo de compilación.
  3. @floatFromInt y @intCast hacen las conversiones que Zig se niega a hacer en silencio.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en comptime; paso 18 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →