Dart — Funciones

2024-01-19T18:00:00-05:00 | 4 minutos de lectura | Actualizado en 2025-01-24T07:42:46-05:00

jaimetellezb
Dart — Funciones

Tabla de Contenido

Introducción

Las funciones en los lenguajes de programación son un grupo de sentencias que dato unos parámetros devuelve un resultado de cierto tipo o incluso sin retorno como los void.

Funciones

Las funciones en Dart son objetos que se pueden asignar a variables, enviar como parámetros y como resultado, Dart también admite funciones anónimas y funciones de flecha.

Dart es un lenguaje orientado a objetos, como dijimos inicialmente las funciones también son objetos que se identifican por el tipo Function.

bool isEvenOrOddNumber(num number) {
  return number % 2 == 0;
}

void main() {
  // validar si un número es par o impar
  int number = 3;
  var evenNumber = isEvenOrOddNumber(number);
  print(evenNumber ? 'Es par' : 'Es impar');
}

Aunque Dart siempre recomienda las funciones de tipo, si quitamos el tipo de retorno sigue funcionando y siendo una función.

isEvenOrOddNumber(num number) {
  return number % 2 == 0;
}

Para el tipo de funciones como los ejemplos que vimos anteriormente, se puede abreviar como una función de flecha con la siguiente estructura: <tipe name() => print(‘nombre’);>.

// Abreviar la función anterior
bool isEvenOrOddNumber(num number) => number % 2 == 0;

Parámetros

Una función puede tener cualquier número de parámetros obligatorios, también puede tener opcionales y con nombre.

int add({required int number1, required int number2}) => number1 + number2;

int add2(int number1, {int? number2}) => number1;

int add3(int number1, int number2) => number1 + number2;

Parámetros con nombre

Los parámetros con nombre son opcionales a menos que se indique que serán obligatorios con la palabra clave required. En caso de no marcarlos como required, entonces se debe colocar opcionales con después del tipo de dato.

void main() {
  var res = addOptional(num1: 1, num2: 3);
  print(res); // 4
}

/// Suma con parámetros opcionales
int addOptional({int? num1, int? num2}) {
  if (num1 == null || num2 == null) return 0;
  return num1 + num2;
}

También se pueden definir valores por defecto.

void main() {
  var res = addOptional(num1: 1, num2: 3);
  print(res); // 4
}
/// Suma con parámetros con valores por defecto
int addOptional({int num1 = 0, int num2 = 0}) {
  return num1 + num2;
}

Y como habíamos visto antes, tenemos los obligatorios con required.

void main() {
  var res = addRequired(num1: 1, num2: 3);
  print(res); // 4
}

/// Suma con parámetros obligatorios
int addRequired({ required int num1, required int num2}) => num1 + num2;

Parámetros posicionales opcionales

Cuando veamos parámetros dentro de [], es porque son parámetros posicionales opcionales sino se agrega un valor por defecto se debe anotar como opcional con ?.

void main() {
  var res = buildMessage(
    'Bob', 'Pep', 'Este es un mensaje de agradecimiento.', 'Colombia');
  print(res);
}

String buildMessage(String from, String to, String msg, [String? postal]) {
  var result = '''
    Buen día $to
    $msg
    Cordial saludo $from
  ''';

  if (postal != null) {
    result = '${result}Enviado desde $postal';
  }

  return result;
}

Función main()

Todas las aplicaciones en Dart deben tener una función main() superior, que es donde arranca la aplicación, devuelve void y tiene como parámetros opcional List<String> para los argumentos. Ya hemos visto algunos ejemplos de esta función anteriormente.

// ejemplo básico
void main() {
  print('Hola Mundo!');
}

// ejecutar app con el comando:
// dart args.dart 1 test
void main(List<String> arguments) {
  print(arguments);

  assert(arguments.length == 2);
  assert(int.parse(arguments[0]) == 1);
  assert(arguments[1] == 'test');
}

Funciones como objetos de primera clase

Esto se refiere a la forma de poder pasar una función dentro de otra función.

int addElement(int element) {
  return element + element;
}

void main() {
  var list = [1, 2, 3];

  // pasamos la función addElement como parámetro.
  var newList = list.map(addElement);

  print(newList); // (2, 4, 6)
}

Funciones anónimas

La mayoría de las funciones tienen nombre como las que hemos visto durante nuestro aprendizaje sobre funciones, pero también podemos crear funciones sin nombre llamadas funciones anónimas o lambdas.

void main() {
  // imprimimos la cantidad de letras que tiene cada color
  const colors = ['red', 'blue', 'green'];
  colors.map((color) {
    return color.toUpperCase();
  }).forEach((color) {
    print('$color: ${color.length}');
  });

}

Para aprender más sobre funciones en Dart, podemos acceder a la documentación oficial , donde hay más detalle al respecto.


Conclusión

Para finalizar, vimos los diferentes tipos de funciones que usa Dart y algunas formas de aplicarlas en nuestras aplicaciones, esto nos ayudará mucho cuando estemos trabajando con Flutter.

¡Gracias por leer!

Fuentes

© 2022 - 2025 jaimetellezb - Compartir guías y tutoriales de programación.

🌱 Powered by Hugo with theme Dream.

Sobre mí

alt

Ingeniero de software

Hola, bienvenidos a mi blog sobre guías y tutoriales de programación.

Aquí podrás encontrar guías y tutoriales sobre algunos temas de tecnología en general. La idea es poder ayudar a que ciertas cosas como configuraciones de nuevas herramientas sean más fáciles de abordar y utilizar. También pequeños proyectos donde se usen diferentes tecnologías como ejemplo.

Enlaces sociales