Central Docs
Catálogo Inicio

Decoradores y contratos

Índice

Los decoradores cambian reglas que el compilador valida.

Decorador Se aplica a Efecto
@unsafe funciones permite procedencia o indexación no demostrable
@assembler funciones habilita #prep assembler; implica unsafe
@recursive funciones acepta ciclos no convertibles a tail recursion
inline funciones especificador de firma, no decorador @; solicita expansión en perfiles optimizados
@packed agregados reduce padding
@align(N) agregados solicita alineación entre 1 y 64
@order_msb flags coloca bitfields desde el extremo MSB
@frozen clases limita escrituras a inicializadores
@after hooks de clase ejecuta hooks después del acceso

Una función segura no puede llamar a una @unsafe; el decorador tampoco convierte enteros en booleanos ni elimina las comprobaciones de Null o de arrays.

@recursive
func factorial(value: int32) int32:
    if value == 0:
        return 1
    return value * factorial(value - 1)

La recursión directa de cola puede convertirse en un bucle sin @recursive. Los decoradores de layout solo se aceptan en los agregados correspondientes; LSB es el orden predeterminado y @order_msb la única alternativa explícita.

inline y volatile son palabras reservadas con posición propia en la sintaxis, no forman parte del inventario de decoradores @.... Un nombre desconocido después de @ se rechaza; no hay alias silenciosos ni decoradores de compatibilidad.