nunca habia trabajado con Function, esto abre un abanico de posibilidades
Introducción a la programación Funcional
¿Qué es la Programación Funcional?
Entendiendo las partes de la programación funcional
¿Qué es una función en Java?
Funciones como ciudadanos de primera clase
Funciones puras
Entendiendo los efectos secundarios
Funciones de orden mayor
Funciones lambda
Inmutabilidad
Functional Programming en Java
Repositorio del curso
Configuración del entorno de trabajo
Revisando el paquete java.util.function: Function
Revisando el paquete java.util.function: Predicate
Revisando el paquete java.util.function: Consumer y Supplier
Revisando el paquete java.util.function: Operators y BiFunction
Entendiendo dos jugadores clave: SAM y FunctionalInterface
Operador de Referencia
Analizando la inferencia de tipos
Comprendiendo la sintaxis de las funciones lambda
Usando metodos default en nuestras interfaces
Dándole nombre a un viejo amigo: Chaining
Entendiendo la composición de funciones
Optional y Streams: Datos mas interesantes
La clase Optional
Entendiendo los Streams
¿Qué son los Stream listeners?
Operaciones y Collectors
Streams de tipo específico y Paralelismo
Operaciones Terminales
Operaciones Intermedias
Collectors
Todo junto: Proyecto Job-search
job-search: Un proyecto para encontrar trabajo
Vista rápida a un proyecto de Gradle
Revisando las opciones para nuestro CLI
Librerías adicionales para nuestro proyecto
Entendiendo la API de jobs
Diseñando las Funciones Constructoras de nuestro Proyecto
Agregando validaciones de datos
Diseñando las funciones de transformacion de datos
Creando flujos extras de transformación de Datos
Conclusiones
Un repaso a lo aprendido
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Sinuhé Jaime Valencia
Aportes 35
Preguntas 6
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.
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.
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.
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?