Bienvenidos.
Continuamos con la programación funcional y prisión en Holanda.
Bueno, ya hemos estado trabajando con esto desde lo drid, por ejemplo con Ranavalona, con Calabuig
también.
Por ejemplo, cuando pasamos una prisión, Landa una implementación de un método al vuelo se guardan,
por ejemplo, en el constructor de un Tried para pasar un rappel o también en el ejecutor servis en
el método Submit para enviar a ejecución alguna tarea.
Pero no solamente eso.
También hemos trabajado con el prisionero Landau en el método foreach del API de colisión de Yaba.
En las listas, por ejemplo, por cada elemento, pudiéramos implementar una función de flecha o expresión
lanta para hacer algo con cada elemento.
Alguna tarea?
Un consumidor como se le conoce, pero también con el comparador comparable.
Es decir, hemos estado trabajando con esto.
Ahora lo que vamos a hacer es aterrizar un poco más y presentarlo de forma más formal y una forma un
poco más ágil.
Quería evitar tener que hacer una presentación porque la verdad, en este caso mucho más simple que
lo vayamos codificando y explicando paso a paso en el código.
Aunque insisto, ya hemos trabajado con esto, así que va a ser bastante simple.
Bien en Yaba o desde ya 8 porque es una característica que se viene a incluir en el JDK desde la versión
8 en adelante.
Controles y programación funcional presiona el lambda.
Todo lo que es el API Stream o de flujos en Java que después vamos a ver que trabaja en base a esta
programación funcional a estas expresiones lanta y va trae ver ese tipo de expresiones lande que podemos
utilizar no solamente el Ranavalona, el compared to comparable el Clavell, sino también entre varios
más que vamos a ver ahora.
Por ejemplo el Consumer.
Un consumidor es su player, que es un proveedor.
Vamos a ver el fant chón, una función que es una prisión blanda.
El predicaste también otra prisión lanta para trabajar con booleanos con alguna expresión de verdad.
Comparadores lógicos.
Antes de comenzar con el ejemplo, definamos lo que es una presión lenda es super simple, es implementar
un método sin necesidad de implementar una clase.
Es decir, implementamos este método al vuelo.
También se le conoce como función o método de flecha.
Recuerden.
Y esto viene a través de la interfaz.
Es decir, al final una prisión Landas se traduce a una interfaz funcional con un solo método abstracto
que tenemos que implementar y lo implementamos al vuelo.
Por eso es anónimo.
No requiere tener una clase para poder implementar este método, mismo concepto que una clase anónima.
Cuando se crea esta clase anónima a partir de la interfaz al vuelo es lo mismo, pero acá con un solo
método, bien, vamos a trabajar.
Entonces vamos a cerrar.
Cerramos todo en Realia con file se proyecto.
Vamos a crear un nuevo proyecto.
Le vamos a llamar bueno siguiente siguiente llaba 8 lanta y finalizamos.
Bien, vamos a crear el pacato.
En ese recé como siempre.
New empacas para horden or Deimos siempre or a Guzmán ya 8.a Landa o lo que quieran.
Oh, qué bien!
Y comenzamos con una clase con el método main ejemplo consumer consumidor.
Bien con el método de.
Para comenzar, no es la primera impresión blanda es Consumer, entonces con Summer lo importamos de
lleba útil Antxón una función una empresa en Landau que utiliza genérico un tipo, pues se wye cosa
de una clase de un stream por ejemplo, o de un tipo numérico, lo que sea, le vamos a llamar consumidor.
Igual por poner un ejemplo, puede colocar saludo, un mensaje, saludo, una flecha y shout saludo.
Bien, ahí lo tenemos.
De qué se trata?
Bien.
Consumer es una expresión landa que nos permite pasar por argumento un solo parámetro del tipo del genérico.
En este caso saludo del tipo string porque lo estamos definiendo acá, pero podría ser cualquier otra
cosa.
Y dentro este método.
Por eso esta flecha.
Acá podemos implementar lo que queramos o hacer algo con esto que estamos pasando por argumento.
Lleveis.
El método no devuelve nada.
Al final es un consumidor del parámetro del método.
Ese concepto.
Entonces consumimos este argumento, este parámetro de un tipo dato cualquiera y hacemos algo lo que
queramos.
Como ya hemos venido viendo, explicando porque también lo he mencionado, ahora lo voy a repetir un
poco.
Cuando tenemos una persona blanda y tenemos una sola línea de código, se puede omitir la llaves, pero
al final podríamos tener acá unas llaves.
Se fijan voy a bajar acá, voy a bajar y acá el punto y coma.
Acá estamos haciendo algo con este saludo.
Qué estamos haciendo?
Lo estamos imprimiendo.
Pero también podríamos hacer una infinidad de cosas que queramos o que necesitemos implementar.
Así como es un string, también podría ser un dato fecha de ya útil.
Por ejemplo, acá se pasa la fecha y acá se imprime la fecha, incluso la fecha.
Podría tener algún tipo de formato, le podríamos dar un formato con simple dato formato
formato igual new y acá un patrón.
Se acuerdan?
Por ejemplo el año, el mes en mayúscula y el día.
Y acá sería F.
Punto formato.
Y pasamos el objeto fecha.
Bueno, si ejecuto esto, obviamente no sucede nada, porque solamente estamos implementando este método,
vamos a revisar.
No pasa nada.
Nada.
Entonces, para que suceda algo es con la implementación e con el objeto consumidor.
Consumer Consumidor punto.
Acepto.
Y acá pasamos.
New Date.
La fecha actual.
Y ahora ejecutamos y se imprimir la fecha de formato.
Esta es la fecha actual 20.
Se fijan entonces por detrás de escena una person lanta se traduce a un interfaz funcional.
De hecho, control click en Consumer Llegá es una interfaz funcional funcional interfaz tiene esta notación,
aunque es opcional, pero solamente tiene un método abstracto sin implementar.
Voy a Set.
Y qué recibe el genérico?
El tipo de dato que se pasa por argumento y que queremos consumir.
Implementar alguna tarea podría tener más métodos, pero da lo mismo método de foll o estático no hay
ningún problema, pero un solo método sin implementar un solo método en este caso abstracto.
Y utiliza, por supuesto, genéricos para que no solamente lo puedo implementar con TEPT, sino con
lo que queramos.
Bien por defecto, el Consumer acepta un solo argumento el método uno solo y no devuelve nada.
Pero también podríamos tener un consumidor, un consumer que tenga dos argumentos en el método y trabajar
o hacer algo con estos dos argumentos parámetros.
También se le conoce como bi consumer, también del tipo genérico.
Por poner un ejemplo del tipo string puede ser de cualquier tipo dato integer o los dos del tipo String,
o los dos del tipo integer o del tipo usuario o como queramos.
Pero son dos argumento consumidor bi porque son dos parámetros igual a como B bien a tu esto fecha se
debe escribir de esta forma o bien puedo colocar acá los paréntesis, pero es opcional.
Cuando es un solo argumento se puede omitir los paréntesis.
Incluso pude colocar el tipo de dato dato en un método afinal.
Pero también el dato está indicado en el genérico acá, entonces no necesario, tampoco necesario acá
los paréntesis, pero cuando son dos, ahí estoy obligado a utilizar paréntesis, en este caso del tipo
string y del tipo entero.
Por ejemplo, nombre, edad.
Llega, implementamos algo, lo que queramos.
Punto y coma al final.
También podría colocar acá del tipo String.
Por ejemplo.
GT Del tipo INTEA, pero tampoco es necesario porque está indicado en el genérico, pero lo que sí es
obligación colocar los paréntesis, porque ya son dos argumentos, al ser dos o más se colocan paréntesis.
Shout Vamos a imprimir nombre, tiene edad?
Años, como por ejemplo Pepe tiene 20 años.
Qué pasa si lo ejecuto?
Bueno, no pasa nada.
Porque no solamente estamos implementando este método al vuelo, no estamos solamente implementando,
ahora lo tengo que utilizar con este objeto, con esta expresión blanda.
Entonces acá consumidor vi punto acepto y acá acepta Streak y el entero.
PP.
20.
Pepe tiene 20 años.
Se fijan estas son expresiones lande que vienen predefinidas en Yaba.
Simplemente la podemos utilizar con el método acept.
Bien, pero por ahora quedamos hasta acá y continuamos en la siguiente clase.