Nosotros ya hemos estado utilizando funciones como por ejemplo el baile Menin una función parentesis
abren y cierran llaves.
Esto es una función común y corriente que regresa al vacío.
Esto es lo que quiere decir.
Ya lo había mencionado antes.
Es una función main que regresa nada.
Eso es lo que significa.
Nosotros también hemos estado utilizando otro tipo de función como el print parentesis y aquí adentro
voy a poner Hola Mundo Punto y Coma si yo dejo el mouse sobre la palabra o el cursor para anotar que
esto es una función porque note que aquí tenemos un par de paréntesis y dice que recibe Object de tipo
Object o sea puede recibir cualquier cosa y retorna Void o sea retorna nada.
Eso es básicamente lo que significa este print o por lo menos así deberíamos nosotros leer esta parte
de esta ayuda podemos crear nuestras propias funciones personalizadas de la siguiente manera.
Voy a crear aquí afuera voy a crearme una función llamada saludar paréntesis abren y cierran llaves.
Noten que es casi igual al main sólo que todavía no estoy definiendo el tipo ya voy a hablar de este
tipo.
Luego ya voy a entrar en detalle con eso esta función saludar al llamarse.
Lo único que va a hacer es imprimir el mensaje de Hola punticos.
Eso es absolutamente todo lo que va a ser esta función por los momentos yo la llamo de la siguiente
manera saluda parentesis puntico.
Entonces cuando el compilador venga ejecutando esta línea está otra línea y detecte que X está llamando
esta función saludar va a buscar la definición de la misma va a saltar a la misma y va a empezar a ejecutar
esta línea de código.
Si yo ejecuto el código o ese programa no se asusten de que ahí diga hola porque es exactamente lo que
le pedí que hiciera.
Ahora si yo dejo el cursor sobre saludar noten que la flechita esta que tiene acá dice que retorna un
valor de tipo dinámico dinámico en pocas palabras.
Esta función puede retornar cualquier cosa y como les había mencionado tenemos que evitar de quedar
infiero a todos los tipos de datos porque si no perdemos funcionalidad y nuestro código queda susceptible
a ciertas fallas y fallas que pueden ser difíciles de llegar a ellas.
Entonces si su función no retorna nada entonces escribe la palabra void.
Esto quiere decir que ahora Accio más encima de saludar no regresa nada y a mí me queda súper claro
que esta función no me regresa nada y yo no lo voy a poder almacenar invariables.
Bueno regresaría.
Pero bueno lo importante aquí es que ustedes recuerden que tenemos que prevenir el dinãmico no es que
sea malo no es que no se puede usar pero es mejor tratar de evitarlo.
Ahora si yo quiero que me función saludar no regrese un string por ejemplo puedo decirle que esto va
a regresar un string noten que aquí me va a marcar un error y me dice que esta función tiene el retorno
o el tipo de retorno de dato tipo string pero no encuentra en su cuerpo o al final del mismo un retorno
Steinmetz.
O sea la palabra retorno.
Eso es lo que nos encontramos.
Si yo pongo un retorno 1 eso no es válido y por eso lo subraya en rojo y dice que el tipo int no es
asignarle o no es un string.
Cómo se definió en el método de saludar o sea como se definió aquí.
Por eso está marcando un error.
Ahora sería diferente si yo lo pongo entre apóstrofe.
Porque eso si es un string pero que voy a poner Hola perfecto.
Mi función ahora de saludar va a retornar un string ese string yo lo puedo imprimir yo lo puedo almacenar
en una variable.
Puedo hacer cualquier cosa si aquí lo defino así bar mensaje va a ser igual a saludar.
Noten que el mensaje a pesar de que lo declare como bar aquí me dice que mensajes de tipo String.
Por qué.
Porque sabe qué saludar retorno measuring y el tipo es inferido.
Nosotros también podríamos hacer algo así sería un mensaje y esto me ayuda mucho a estar seguro de que
el mensaje siempre va a ser de tipo string vamos a imprimirlo en consola un mensaje punto y coma lo
ejecuto.
Y aquí también debería decir hola.
Nada sorprendente nada del otro mundo.
Ok cómo pasamos.
Argumentos.
Supongamos que a la hora de llamar esta función yo necesito pasarle argumentos a este método de saludar
o esta función de saludar perdón.
Y aquí es donde nosotros vamos a mostrarlos o que el retorno haga algo en particular.
Por ejemplo yo quiero mandarle aquí a la función de saludar el mensaje.
O mejor dicho el texto para no confundirnos.
El texto que yo quiero usar y el nombre de una persona a la cual yo quiero saludar el retorno siempre
va a ser un estreno y voy a concatenar lo que es el texto espacio y después el nombre como para que
diga hola juan o pedro o a Fernando.
Y eso es lo que voy a definir acá voy a definir a qué saludar y aquí sería Hola como espacio y es que
vamos a poner su nombre Fernando en mi caso ese error debería desaparecer si yo dejo el mouse sobre
cualquier definición de saludar.
Noten que aquí me está diciendo arreglarme un poco que saludar reciba argumentos de tipo dinámico Dinamic
nombre y que eso regreso me Schenk al ser Dinamic y Dinamic.
Ambos.
Quiere decir que si yo lo ejecuto tendría Hola Fernando.
Ok eso no es nada sorprendente De hecho puse doble espacio ahí puse doble espacio pero perfectamente
podría mandar aquí un uno y aquí otro y mi función funciona todavía valga la redundancia.
Mi función sigue trabajando en otro pero yo necesito validar esto y yo necesito impedir que inclusive
yo mismo mande basura a mis funciones porque como dice el dicho sí basura entra basura es la que va
a salir.
Entonces puedo definir que el texto pase de tipo string y el nombre también es de tipo string noten
que aquí ya me marca los errores.
Por consecuencia tendría que poner la goma y el nombre Fernando lo vuelvo a ejecutar.
No deberíamos tener ningún error y ahí está perfecto ahora.
Pero qué pasa si la persona dice o no sabe que el primer argumento es el nombre el mensaje y el segundo
es el nombre y si yo lo pongo de esta manera voy a ponerlo así Fernando o la coma.
Si yo lo ejecuto pues el mensaje va a parecer un poco extraño no dice Fernando.
Hola buenas en español no suena tan mal pero obviamente está malo.
Qué podemos hacer.
Dart nos ofrece la posibilidad de ponerle nombre a los argumentos de esta manera voy a colocar una llave
aquí al inicio cierro la llave las llaves a casa tengo una llave aquí que cierra acá.
Ahí están las llaves.
Si yo dejo el Maudos encima de la función saludar noten que ahora me marca que saludar recibe un string
texto y un nombre posiblemente a ustedes les marque un error acá pero si yo lo ejecuto aquí me va a
tirar un error porque estoy definiendo mal los argumentos.
Cuando una función a una clase tiene en su constructor o tiene estas llaves ustedes a Zósimo que son
parãmetros con nombre.
Qué quiere decir eso que yo necesito especificar el nombre por ejemplo texto va a ser igual a Hola espacio
Koma y ahora puedo mandarle aquí el nombre.
Qué va a hacer Fernando curramos esto un poquito para acá para ver más espacio más espacio y lo ejecuto.
Por consecuencia debería tener hola fernando y no va a importar si el nombre es el argumento que estoy
mandando al inicio.
Faltó una coma y el texto es el que estoy mandando al final no importa porque cuando yo llame la función
va a asignar correspondientemente cada uno de los valores a su respectiva llave.
Por eso siempre sale bien aunque yo lo ponga al revés antes de terminar el video quiero mostrarles que
también existen las funciones de flecha muy parecidas a JavaScript y otros lenguajes.
Voy a copiar toda esta función la pego le voy a poner saludar dos pero pero como el retorno a mi función
sólo tiene una línea y esa línea es el retorno yo puedo cambiar todo este código de la siguiente manera
déjeme borrarlo.
Función de flecha.
Así mediante un signo de igual y un signo mayor y luego inmediatamente viene el retorno que yo quiero
que esta función valga la redundancia regrese a donde sea que se llame.
En este caso lo que yo quiero retornar es el texto espacio nombre más esta función y ésta son exactamente
la misma pero aquí hay menos líneas de código y esto lo vamos a usar mucho.
Vamos a probar si esto funciona si yo pongo aquí un 2 y mandó llamar la función.
Vamos a ver si sucede lo mismo sucedió lo mismo.
Excelente entonces.
Básicamente estas son las funciones de flecha básicamente son funciones comunes y corrientes pero aquí
implícitamente está la palabra retrón que tiene aquí un retorno bien escrito.
De eso lo voy a dejar así y continuamos con la siguiente clase.