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
describe[width]elige sobre un parámetro, así que sobrevive un soloreturn.comptime fordesenrolla la cuenta regresiva en tres llamadas aprint.- Las dos formas reemplazan al decorador
@parameter, ya obsoleto.
Palabras clave y builtins usados aquí
IntStringdefelseforifprintrangereturn
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.
Paso 5 de 5 en Mojo en tiempo de compilación; paso 5 de 22 en Parámetros y SIMD.