Introducción a la programación Funcional

1

¿Qué es la Programación Funcional?

Entendiendo las partes de la programación funcional

2

¿Qué es una función en Java?

3

Funciones como ciudadanos de primera clase

4

Funciones puras

5

Entendiendo los efectos secundarios

6

Funciones de orden mayor

7

Funciones lambda

8

Inmutabilidad

Functional Programming en Java

9

Repositorio del curso

10

Configuración del entorno de trabajo

11

Revisando el paquete java.util.function: Function

12

Revisando el paquete java.util.function: Predicate

13

Revisando el paquete java.util.function: Consumer y Supplier

14

Revisando el paquete java.util.function: Operators y BiFunction

15

Entendiendo dos jugadores clave: SAM y FunctionalInterface

16

Operador de Referencia

17

Analizando la inferencia de tipos

18

Comprendiendo la sintaxis de las funciones lambda

19

Usando metodos default en nuestras interfaces

20

Dándole nombre a un viejo amigo: Chaining

21

Entendiendo la composición de funciones

Optional y Streams: Datos mas interesantes

22

La clase Optional

23

Entendiendo los Streams

24

¿Qué son los Stream listeners?

25

Operaciones y Collectors

26

Streams de tipo específico y Paralelismo

27

Operaciones Terminales

28

Operaciones Intermedias

29

Collectors

Todo junto: Proyecto Job-search

30

job-search: Un proyecto para encontrar trabajo

31

Vista rápida a un proyecto de Gradle

32

Revisando las opciones para nuestro CLI

33

Librerías adicionales para nuestro proyecto

34

Entendiendo la API de jobs

35

Diseñando las Funciones Constructoras de nuestro Proyecto

36

Agregando validaciones de datos

37

Diseñando las funciones de transformacion de datos

38

Creando flujos extras de transformación de Datos

Conclusiones

39

Un repaso a lo aprendido

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Revisando el paquete java.util.function: Function

11/39
Recursos

Aportes 35

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

nunca habia trabajado con Function, esto abre un abanico de posibilidades

NO SE LES OLVIDE QUE DESPUES DE LA LLAVE DE CIERRE DE LA FUNCION PONER EL ;

Un método también puede ser una función, la diferencia es que las funciones también son tipos y al ser tipos se puede realizar operaciones con ellas:

  • involucrarse como variables

  • pasarlas como parámetros

  • recibirlas como retorno de ejecución

La rama para esta clase es 04-funciones-en-java.

Function

Utilizando la interfáz Function del paquete java.util.function, es posible definir funciones como si se tratase de una variable más. Esto se hace instanciando una clase anónima que implemente la interfaz Function<T, R>, donde T es el tipo de dato que recibirá como parámetro, y R el tipo de dato retornado. Además se deberá hacer @Override del método apply escribiendo en él el código que corresponda a la función que se queire definir.

Por ejemplo, se puede definir dentro del método main la función funcionCuadrado que recibe y devuelve un Integer.

public class MainClass {

  public static void main(String[] args) {

    // defino una funcion que calcula el cuadrado de un número
    Function<Integer, Integer> funcionCuadrado = new Function<Integer, Integer>() {
      @Override
      public Integer apply(Integer x) {
        return x * x;
      }
    };

    // uso la función definida
    Integer a = funcionCuadrado.apply(5);  // retornará 25
    Integer b = funcionCuadrado.apply(25); // retornará 625
  }

}

En mi caso, para ver la definición de Function en el IntelliJ IDEA no me aparece como Go To > Go To sino:
Go To > Declaration or Usages. (serán diferencias en versiones 🤷‍♀️).
![](

Pensé en que seria una explicación detalla, como por ejemplo esa sintaxis. No explico que se esta creando una clase anónima y que esta clase implemento a Function (por eso se sobrescribe al método aply), que luego su instancia fue asignada a square de tipo function o algo mejor, explicar desde una clase normal luego convertirla a una clase anonima.
Esta quedando vacíos! Menos mal existe chatgpt

Genial el shortCut de psvm

Creí que esto era de otro planeta pero es dentro de todo básico en Js

Me he bajado el proyecto y he abierto el gradle build desde intel Ij para que descargara las dependencias y falla por todos lados. El profesor explica muy bien pero a la hora de iniciar a programar no me gusta que todo sean proyectos ya hechos y que directamente te los cuelgue en el repositorio y te diga,este es el repositorio , buscate la vida…

public class App {
	public static void main(String[] args) {
		Function<Integer,Integer> squareFunction= new Function<Integer,Integer>(){

			@Override
			public Integer apply(Integer t) {
				// TODO Auto-generated method stub
				return t*t;
			}
			
		};
		System.out.println(squareFunction.apply(2));
		
	}
	
}

Con la actualización de hace 1 año solo se escribe main e inteliij te genera el metodo Main 😄

Comparto el siguiente enlace que contiene más información sobre la interface Function de Java: https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html

Es similar a la creación de funciones expresivas en JavaScript

escribiendo los shortcut main o psvm te genera toda la estructura de un metodo main

Es imposible tratar de arrancar el código directamente del repositorio usando InteliJIdea, por el momento se puede trabajar con Eclipse, ¿Alguien pudo ejecutarlo directamente con InteliJIdea?

Shortcut psvm se genera public void main y sout system.out.println, muy cool

Volví a mirar los vídeos de nuevo hasta este punto, hice apuntes a mano en un cuaderno y estuve usando Intellij y de a poco, voy masticando y entendiendo todo esto que es nuevo para mi. Sin dudas es otro estilo de programación, que requiere su tiempo para poder ser comprendido.

muy bien explicado

Estupenda clase instructor Sinuhé, sirve para comprender los fundamentos de funciones en Java.

Para ser más exactos, Function es una interfaz funcional y no una simple función, cuya característica es que tiene un solo método abstracto, en este caso apply, y que esta se puede implementar con una clase anónima o mejor aún con una expresión lambda o una referencia a método.

Como le hiciste para editar el nombre del metodo en todas las coincidencias?, Se que con shift + ALT puedes seleccionar varias lineas pero no vi que hicieras eso.

En resumen, los métodos son parte de una clase y se utilizan para realizar tareas específicas dentro de esa clase, mientras que las Function representan funciones que aceptan un argumento y producen un resultado. Son más adecuadas para operaciones de programación funcional, como la composición de funciones y el procesamiento de datos en flujos.

Una función recibe un parametro y produce un resultado.
Cuando se declara, se debe indicar que tipo de parametro va a recibir y que tipo de resultado va retornar.

en mi caso no me dejo correr square sin el .apply

También puedes tipear main y darle enter para generar el método

Casi estaba sorprendido con eso de functional programing en Java. Pues resulta que el famoso tipo de Function en Java es una Interfaz y lo que estamos haciendo son clases anonimas. Es un buen hack, no se me hubiera ocurrido XD.

shortcute: psvm = public static void main(String[] args) /// sout = System.out.println("");

¿Alguno sabe como obtener los {} de colores que tiene el profe por jerarquia? es muy util a la hora de debugear

Excelente explicación, lo que me pareció curioso es que se tiene que reescribir el método apply por cada nueva función que creemos.

Genial 😃

Genial, yo con solo escribir main me sale para escribir automaticamente todo el metodo main.

Métodos son propios de las clases

es posible pasar mas de un argumento con diferentes tipos de datos(int,double,etc…) ???

En eclipse tuve que instalar un decompilador y cambiar el jre por jdk