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: Operators y BiFunction

14/39
Recursos

Aportes 20

Preguntas 3

Ordenar por:

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

Estas funciones extienden de Function. Quiere decir que tienen el método apply.

UnaryOPerator --> Solo se especifica un solo tipo de dato. Se entiende que tendrá como resultado el mismo tipo.

BinaryOperator --> Solo se especifica un tipo de dato. Se entiende que tendrá 2 parámetros de entrada y el uno de retorno del mismo tipo de dato.

Bifunction --> 2 parámetros de entrada, se tiene que especificar el tipo de dato. Puede tener diferentes tipos de entradas como también diferente tipo de salida.

Les comparto este blog para ampliar un poco lo visto en clase.

La sintaxis de las funciones tienen un leve parecido a las Arrow Functions que aplicamos en Javascript 🤔

BiFunction:
Tipo de Function que recibe 2 parámetros en lugar de 1.

Operators
UnaryOperator:
Function, donde la entrada y la salida son del mismo tipo.

BinaryOperator:
BiFunction donde los parámetros y la salida son del mismo tipo.

Operators nos permiten crear nuestros propios operadores para recibir los datos que necesitemos

BiFunction

Utilizando la interfáz BiFunction<T, U, R>, es posible definir funciones tal como con Function, pero en este caso es posible recibir dos parámetros que pueden ser de tipos diferentes (T y U), retornando un dato de tipo R.

BiFunction<Integer, String, Double> multiplicar = (x, y) -> Double.valueOf(x) / Double.parseDouble(y);

Double resultado = multiplicar.apply(100, "1,75"); // retornará 175.0

En caso de que se quiera definir una función donde los dos parámetros y el resultado sean del mismo tipo, en lugar de usar BiFunction puede usarse BinaryOperator<T>.

Esta clase estuvo muy bien explicada

esa “barra al revés + comilla”… simplemente significa “comillas”?

Excelente clase, ahora sabemos la estructura básica para utilizar Operators y BIfunctions al momento de crear funciones.

Potente esta clase, programación orientada a objetos para ciertos temas y funcional para ciertos otros, es la mejor opción. Veo un potencial muy grande de mejorar la calidad del código que escribo aplicando los 2 paradigmas en java o cualquier lenguaje.

Genial

java.util.Super 😃

Me llamó la atención esa función formateador

Ejemplo práctico de bifunction

UnayOperator, extiende de función con lo cual no es necesario especificar el tipo de dato a retornar