← Todos los tutoriales
language-deep-dive 7 min

Funciones en Profundidad

Las funciones en Clean Language tienen tipado estricto — el compilador sabe exactamente qué acepta y devuelve cada función. Esto hace que la composición sea segura: cuando pasas la salida de una función como entrada de otra, el compilador verifica que los tipos coincidan.

Las funciones llaman a otras funciones libremente — construye comportamiento complejo a partir de piezas simples:

functions:\n    integer clamp(integer value, integer min_val, integer max_val)\n        if value < min_val\n            return min_val\n        if value > max_val\n            return max_val\n        return value\n\n    string progress_bar(integer percent)\n        integer clamped = clamp(percent, 0, 100)\n        integer bars = clamped / 10\n        string filled = ""\n        iterate i in 0 to bars - 1\n            filled = filled + "#"\n        string empty = ""\n        iterate i in 0 to (10 - bars) - 1\n            empty = empty + "-"\n        return "[" + filled + empty + "] " + clamped.toString() + "%"\n\nstart:\n    print(progress_bar(30))\n    print(progress_bar(75))\n    print(progress_bar(110))
[###-------] 30%\n[#######---] 75%\n[##########] 100%

progress_bar llama a clamp para aplicar límites seguros, luego construye el string de la barra. Los parámetros tipados significan que llamar a clamp con un argumento string es un error de compilación. Múltiples returns en diferentes ramas están bien — la rama que se ejecuta devuelve el resultado de la función.

Las funciones que devuelven boolean responden una pregunta de sí/no — perfectas para condiciones if:

functions:\n    boolean is_valid_email(string email)\n        if email.length() < 5\n            return false\n        if email.contains("@") == false\n            return false\n        if email.contains(".") == false\n            return false\n        return true\n\n    string check_email(string email)\n        if is_valid_email(email)\n            return email + " looks valid"\n        return email + " is not a valid email"\n\nstart:\n    print(check_email("alice@example.com"))\n    print(check_email("notanemail"))\n    print(check_email("short@x"))
alice@example.com looks valid\nnotanemail is not a valid email\nshort@x is not a valid email

is_valid_email devuelve boolean, así que check_email puede usarla directamente como condición if. Este es el idioma de Clean Language para la validación: extrae la comprobación en una función boolean y llámala donde sea necesario. El tipo de retorno hace que la intención de la función sea obvia.

Resumen rápido

  • Las funciones llaman a otras funciones libremente — compone comportamiento a partir de piezas simples y testeables
  • Múltiples sentencias return en diferentes ramas están permitidas
  • Las funciones boolean responden preguntas de sí/no y funcionan directamente como condiciones if
  • Los parámetros tipados se aplican en tiempo de compilación — los tipos de argumento incorrectos se detectan temprano
¡Copiado!