Resumen del capítulo
Las funciones se declaran usando fn seguido por el nombre de la función, un paréntesis con o sin parámetros tipados y siempre indicando el tipo de retorno, aunque sea void (no devuelve nada).
- Los parámetros de una función en Zig son siempre inmutables y se pasan por copia, incluso los punteros.
- Podemos devolver multiples valores usando arrays o tuplas (struct anónimos).
- Usamos la desestructuración para extraer los valores devueltos.
- Podemos definir valores opcionales usando ?T y usar orelse para establecer valores por defecto.
- Las funciones inline permiten insertar su cuerpo (copiarlo) directamente donde han sido llamadas.
- El código se puede organizar en librerías e importar funciones y tipos usando @import. Para poder accederlos desde fuera necesitan llevar el prefijo pub.
- Las listas dinámicas (ArrayList) permiten trabajar con colecciones que sí pueden crecer o decrecer en tiempo de ejecución a diferencia de los arrays.
- Como los errores en Zig son valores las funciones pueden devolverlos usando !T o error{NombreError,...}!T. Podemos manejar estos errores con try o catch.