DEV Community

Giuseppe Vetri for Codingpizza

Posted on • Updated on

Funciones en Dart

En esta secci贸n vamos a hablar sobre las funciones, como funcionan en Dark y sus tipos.

馃驴Qu茅 es una funci贸n?

Una funci贸n es un bloque de c贸digo que debe ser organizado, realizar una sola tarea y debe estar relacionado a la clase en la que estamos trabajando. 驴Por qu茅 digo "deber铆a" ? Porque mucha gente tiende a olvidarse de esto y creeme que te encontrar谩s muchos de estos casos en tu vida profesional.

Las funciones tambi茅n deben ser en su mayoria reusables, esto reducir谩 la cantidad de c贸digo que escribes e incrementar谩 la cantidad del mismo. Si ha sido hecho correctamente, claro.

馃懆鈥嶐煍 Anatom铆a de las funciones

Existen muchos tipos de funciones en Dart, primero vamos a aprender sobre coymo funciona una funci贸n y luego vamos a hablar sobre los otros tipos de funciones.

Las funciones son usualmente creadas con la siguiente sintaxis:

void printName(String name) {
  print(name)
}
Enter fullscreen mode Exit fullscreen mode

D贸nde:

void es el tipo que regresa la funci贸n, esto significa que cuando una funci贸n ejecuta todo el c贸digo dentro de ella esta debe regresar un valor de este tipo.

Espera un momento... Nosotros no estamos regresando nada, solo estamos imprimiendo un nombre. Cuando no necesitamos regresar un valor decimos que es del tipo void.

printName es el nombre de la funci贸n, un nombre que vamos a necesitar usar despu茅s, el mismo debe saber explicar qu茅 hace esta funci贸n.

(String name), dentro del par茅ntesis vamos a especificar el tipo del par谩metro que va a recibir la funci贸n y el nombre de este par谩metro. Los par谩metros son variables que est谩n disponibles dentro de la funci贸n, hablaremos m谩s sobre ellos en el siguiente capitulo.

Veamos un ejemplo cl谩sico:

Integer sum(Integer a,Integer b) {
    return a+b;
}
Enter fullscreen mode Exit fullscreen mode

Esta funci贸n suma dos enteros, le pasamos a la funci贸n un primer y un segundo valor y esta nos regresa la suma de los dos. Podemos usarla de la siguiente manera:

String result = sum(2+2);
print(result);

//Resultado de la ejecuci贸n: 4
Enter fullscreen mode Exit fullscreen mode

En este c贸digo creamos una variable llamada resultado la cual almacena el valor que obtenemos de la funci贸n sum, cuando usamos print para imprimirla el resultado es 4.

En simples palabras podr铆a decirse que una funci贸n funciona como una maquina de helados, puedes agregar los ingredientes (parametros) y deber铆a regresar un delicioso helado. Veamos otro ejemplo:

AwesomeIceCream IceCreamMachine(String flavourExtract,Double coupsOfMilk,Integer sugarCup){
    return AwesomeIceCream(flavourExtract,coupsOfMilk,sugarCup)
}
Enter fullscreen mode Exit fullscreen mode

In this more advanced example we created a function called IceCreamMachine which returns a AwesomeIceCream object. And object is an instance of a class, we're going to discuss it later. But keep in mind that AwesomeIceCream is an object like Strings,Integer or Double.

En este ejemplo m谩s avanzado hemos creado una funci贸n llamada IceCreamMachine (M谩quina de Helados) la cual regresa un objeto AwesomeIceCream (HeladoIncreible). Este objeto es una instancia de una clase, esto lo hablaremos luego. Pero manten en mente que AwesomeIceCream es un tipo de objeto como lo es un String, un Entero o un Double.

鉃★笍Arrow function (Funciones Flecha)

En Dart existen otro tipos de funciones, veamos las siguientes.

Las Arrow Function llamadas Funciones Flecha en espa帽ol, son funciones que solo pueden tener una l铆nea de c贸digo y te dar谩s cuenta que tendr谩 en lugar de par茅ntesis una flecha =>

void printName(String name) => print(name);
Enter fullscreen mode Exit fullscreen mode

Este tipo de funciones nos ayuda a mantener nuestras funciones peque帽as e incrementar la legibilidad del c贸digo. Vamos a convertir nuestros ejemplos anteriores a arrow functions.

Empecemos con la funci贸n sum, en primer lugar necesitamos remover los par茅ntesis y agregar la flecha, despu茅s de la flecha debemos agregar la l贸gica de nuestra funci贸n, 隆y eso es todo! Hemos creado exitosamente nuestra primera arrow function.

Integer sum(Integer a,Integer b) => a+b;
Enter fullscreen mode Exit fullscreen mode

Ahora es tu turno, 驴Por qu茅 no intentas convertir por tu cuenta la funci贸n iceCreamMachine?

馃暤锔忊嶁檧锔 Funciones an贸nimas

Como hemos hablado previamente todas las funciones deben tener un nombre, pero no es el caso de las funciones anonimas. Esta funci贸n es llamada en el momento y pasada como par谩metro a otras funciones 馃く. Veamos un ejemplo:

var icecreamFlavours = ['chocolate', 'vanilla', 'orange'];
icecreamFlavours.forEach((item) {
  print('We have the $item flavour');
});
Enter fullscreen mode Exit fullscreen mode

Nota: Lo que hace la funci贸n ForEach es ejecutar el c贸digo dentro de ella por cada elemento de la lista. No te preocupes ya que vamos a ver m谩s sobre las collections en otro capitulo.

La funci贸n de la que hemos hablado imprime el siguiente resultado:

We have the chocolate flavour
We have the vanilla flavour
We have the orange flavour
Enter fullscreen mode Exit fullscreen mode

驴Qu茅 ha pasado aqu铆?. La funci贸n forEach recibe como par谩metro una Function (funci贸n), en Dart Function es un tipo tambi茅n.

Para las funciones an贸nimas la sintaxis es la siguiente:

(parameterName) {
  Body of the function
}
Enter fullscreen mode Exit fullscreen mode

parameterName : El nombre del par谩metro

Body of the function: El cuerpo de la funci贸n, la l贸gica que queremos que tenga la funci贸n.

Si te sientes confundido no te preocupes, intenta verlo de esta forma: Las Anonymous functions son una forma corta de crear una funci贸n.

Supongamos que tienes una lista y que quierer recorrer toda la lista para imprimir los objetos que se encuentran dentro de ella, pero quieres tener una funci贸n que lo haga. Podr铆amos hacer algo como esto:

var list = List.from([1, 2, 3, 4, 5, 6]);
list.forEach(
//Aqu铆 deberiamos imprimir nuestros numeros
);
Enter fullscreen mode Exit fullscreen mode

Pero como queremos imprimir nuestros n煤meros en otra funci贸n, podemos crear la funci贸n getPrintElementFunction().

void function; getPrintElementFunction() {
  return (item) {
    print("The number is $item");
  };
}
Enter fullscreen mode Exit fullscreen mode

Esta funci贸n regresa una funci贸n 馃く. 驴Es un poco raro, no? Luego podr铆amos utilizarla dentro de nuestra funci贸n forEach de la siguiente manera.

list.forEach(getPrintElementFunction());
Enter fullscreen mode Exit fullscreen mode

Esto podr谩 compilar e imprimir el mismo resultado de la funci贸n que vimos previamente, pero es un poco feo si quieres hacer algo tan simple como imprimir algo 驴No lo crees?

Ahora es tu turno

Puedes probar estos conceptos en Entornos de desarrollo (IDE) como Intellij Idea Community, que es gratis e instalar el plugin de Dart, si te gusta Visual Studio Code tambien puedes probar estos conceptos en 茅l y por 煤ltimo si prefieres algo online, puedes utilizar **Dartpad.**

Post anterior

Si est谩s interesado en m谩s post como este puedes revisar mis otros art铆culos sobre Dart.

Variables.

驴Quieres saber mas sobr茅 Dart?

Si te ha gustado este post y est谩s interesado en aprender Dart, actualmente estoy escribiendo m谩s art铆culos como este en un ebook, el cual es un curso b谩sico de Dart que te ayudar谩 a tener un buen conocimiento que luego podr谩s utilizar para empezar con Flutter ;).
Puedes darte de alta en este link.. Ya que el ebook ser谩 totalmente gratis. ya que el ebook ser谩 totalmente gratis.

Top comments (0)