typestar

Ramificar en tiempo de compilación en Mojo

comptime if y comptime for los resuelve el compilador, sin dejar ninguna rama atrás.

def describe[width: Int]() -> String:
    comptime if width >= 8:
        return "wide"
    else:
        return "narrow"


def countdown[start: Int]():
    comptime for i in range(start, 0, -1):
        print(i)


def main():
    print(describe[16](), describe[4]())
    countdown[3]()

Cómo funciona

  1. describe[width] elige sobre un parámetro, así que sobrevive un solo return.
  2. comptime for desenrolla la cuenta regresiva en tres llamadas a print.
  3. Las dos formas reemplazan al decorador @parameter, ya obsoleto.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
242
Tokens
69
Ritmo de tres estrellas
65 tpm

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

Escribe este fragmento

Paso 5 de 5 en Mojo en tiempo de compilación; paso 5 de 22 en Parámetros y SIMD.

← Anterior Siguiente →