Las funciones son bloques de código que realizan una tarea específica y pueden ser reutilizadas en diferentes partes de un programa. En Dart, las funciones son ciudadanos de primera clase, lo que significa que pueden ser asignadas a variables, pasadas como argumentos a otras funciones y devueltas por otras funciones.
Conceptos Clave
- Definición de Funciones: Cómo declarar y definir funciones en Dart.
- Parámetros de Función: Diferentes tipos de parámetros que se pueden usar en las funciones.
- Valores de Retorno: Cómo devolver valores desde una función.
- Funciones Anónimas y Lambdas: Uso de funciones sin nombre.
- Closures: Funciones que capturan el entorno en el que fueron creadas.
Definición de Funciones
Para definir una función en Dart, se utiliza la palabra clave void
si la función no devuelve ningún valor, o se especifica el tipo de dato que la función devolverá.
void main() { // Llamada a la función greet(); } // Definición de una función que no devuelve valor void greet() { print('Hello, World!'); }
Si la función devuelve un valor, se especifica el tipo de retorno:
void main() { // Llamada a la función int result = add(3, 4); print(result); // Imprime: 7 } // Definición de una función que devuelve un valor int add(int a, int b) { return a + b; }
Parámetros de Función
Parámetros Posicionales
Son los parámetros que se pasan en el orden en que se definen.
void main() { printFullName('John', 'Doe'); } void printFullName(String firstName, String lastName) { print('$firstName $lastName'); }
Parámetros Nombrados
Permiten especificar los argumentos por nombre, lo que mejora la legibilidad del código.
void main() { printFullName(firstName: 'John', lastName: 'Doe'); } void printFullName({required String firstName, required String lastName}) { print('$firstName $lastName'); }
Parámetros Opcionales
Pueden ser posicionales o nombrados y no son obligatorios al llamar a la función.
void main() { printFullName('John'); } void printFullName(String firstName, [String? lastName]) { if (lastName != null) { print('$firstName $lastName'); } else { print(firstName); } }
Valores de Retorno
Las funciones pueden devolver valores utilizando la palabra clave return
.
void main() { int result = multiply(3, 4); print(result); // Imprime: 12 } int multiply(int a, int b) { return a * b; }
Funciones Anónimas y Lambdas
Las funciones anónimas, también conocidas como lambdas o funciones de flecha, son funciones sin nombre que se pueden asignar a variables o pasar como argumentos.
Función Anónima
Función de Flecha
Closures
Un closure es una función que captura las variables del entorno en el que fue creada.
void main() { Function addTo = makeAdder(2); print(addTo(3)); // Imprime: 5 } Function makeAdder(int addBy) { return (int i) => addBy + i; }
Ejercicios Prácticos
Ejercicio 1: Crear una Función de Suma
Instrucciones: Escribe una función llamada sum
que tome dos números como parámetros y devuelva su suma.
Ejercicio 2: Función con Parámetros Nombrados
Instrucciones: Escribe una función llamada describePerson
que tome parámetros nombrados name
y age
, y que imprima una descripción de la persona.
void describePerson({required String name, required int age}) { print('$name is $age years old.'); } void main() { describePerson(name: 'Alice', age: 30); // Debería imprimir: Alice is 30 years old. }
Ejercicio 3: Función Anónima
Instrucciones: Usa una función anónima para imprimir cada elemento de una lista.
void main() { var fruits = ['apple', 'banana', 'cherry']; fruits.forEach((fruit) { print(fruit); }); }
Soluciones
Solución al Ejercicio 1
Solución al Ejercicio 2
void describePerson({required String name, required int age}) { print('$name is $age years old.'); } void main() { describePerson(name: 'Alice', age: 30); // Imprime: Alice is 30 years old. }
Solución al Ejercicio 3
void main() { var fruits = ['apple', 'banana', 'cherry']; fruits.forEach((fruit) { print(fruit); }); }
Conclusión
En esta sección, hemos aprendido cómo definir y utilizar funciones en Dart, incluyendo el uso de parámetros posicionales, nombrados y opcionales. También hemos explorado funciones anónimas y closures. Las funciones son una herramienta poderosa para estructurar y reutilizar código, y comprender su uso es fundamental para cualquier programador de Dart. En el próximo módulo, profundizaremos en las colecciones, como listas, conjuntos y mapas, que son esenciales para manejar grupos de datos en Dart.
Curso de Programación en Dart
Módulo 1: Introducción a Dart
- Introducción a Dart
- Configuración del Entorno de Desarrollo
- Tu Primer Programa en Dart
- Sintaxis y Estructura Básica