Esto debería haber sido explicado antes. Hizo como 20 ejemplos en clases anteriores dándolo por entendido poniendo simplemente <T,V,R> y tipeando a toda velocidad sin detenerse, y para los que venimos de practicar solo con POO es imposible verlo.
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
You don't have access to this class
Keep learning! Join and start boosting your career
Modern programming has evolved in a way that facilitates the developer's work, one of these features is type inference. This concept allows the compiler to automatically deduce the type of data being used within a function or expression, without the need for the programmer to specify it explicitly. This not only makes the code cleaner and more readable, but also reduces the risk of errors.
To understand how it works, let's take as an example a programming language that uses type inference during compilation. The process starts when we define a function. Suppose we make a function that receives an Integer
and returns a String
. This function, which we will call converter
, takes the integer value, multiplies it by two and then converts it to a String
.
public String converter(Integer value) { return Integer.toString(value * 2);}
In this case, although we do not specify that the parameter is an integer within the method, the compiler is able to determine that value
is an integer because of the context in which it is used and how it is manipulated.
Type inference has multiple benefits in software development:
To deepen the concept, let's consider an example used in object-oriented programming. Let's imagine that we create a list of students
in which we directly store references to other methods that generate student names.
public List<String> getName() { return Arrays.asList("Juan", "Paco", "Luiza");}
During list processing, we can use reference-based methods, which will act on the list elements without requiring the types to be explicitly specified. This capability is based on type inference that validates during compilation that the methods receive and return the correct types.
Although type inference offers great benefits, it also has its limits. In some situations, the lack of explicit specification can lead to confusion about what type of data is being manipulated, making it difficult to maintain in large projects. Therefore, it is important to find a balance between using inference and clear type specification to keep the code readable and manageable.
In short, type inference is a powerful tool that, when used correctly, significantly optimizes software development, making the coding process more efficient and less error-prone, so don't hesitate to explore and apply this concept in your next projects!
Contributions 17
Questions 0
Esto debería haber sido explicado antes. Hizo como 20 ejemplos en clases anteriores dándolo por entendido poniendo simplemente <T,V,R> y tipeando a toda velocidad sin detenerse, y para los que venimos de practicar solo con POO es imposible verlo.
Que desorden este curso. Creo que por el afán de explicar los conceptos en el tiempo limite, no estructuraron bien este curso y hace un poco difícil asimilar todo lo que se explica aquí. Mal, no me ha gustado este curso!
Me encanta poder entender por fin el operador de referencia ::
Pero me parece horroroso, hace el código muy poco legible…
¿Si abusamos de la inferencia de tipos, podría afectar el rendimiento y la legibilidad del código?
La inferencia del tipo, java lo hace es que en tiempo de ejecucion valida el valor que pasas sea del tipo que se requiere
La inferencia de tipos es un algo que nos ayuda a escribir menos código, ¿Esto hace que el lenguaje pierda su propiedad de que es fuertemente tipado?
Veo que igual los parámetros que entraran tienen que tener su tipo bien definido.
Para los que dicen que esto no se había explicado antes, si se hizo, en el curso de Introducción a Java SE se hablo sobre la inferencia, solo que aquí lo estamos haciendo con funciones.
import java.util.function.*;
import java.util.List;
public class Inferencia {
public static void main(String[] args) {
Function<Integer, String> funcionConvertidora =
x -> "Al doble :" + (x * 2);
List<String> alumnos = NombresUtils.getList("Ulises","Dhamar","Jareny");
alumnos.forEach((String name) -> System.out.println(name));
alumnos.forEach((name) -> System.out.println(name));
alumnos.forEach(System.out::println);
}
}
✅
Excelente clase
Excelente, muy buena explicacion
Algo similar a lo que hace kotlin, solo que kotlin infiere tipos desde el momento que declaras una variable.
Excelente 😃
Excelente info
Estupenda utilidad de esta forma Java determinara los tipos de datos al hacer la compilación y nos ahorra algunas líneas de código, además de asegurarnos que se cumpla con el proceso de la función que se estableció.
Es interesante, muchas gracias por la explicacion. Aunque si concuerdo un poco que esto se pudo explciar antes, pero de igual forma se explico en un momento oportuno.
Es la nueva forma que Java nos permite escribir menos código ya que él se encargara de saber qué tipo de dato debe manejar, tiene sus pro y contras como todo pero creo que tiene más pro ya que al hacerlo en tiempo de compilación no tendríamos preocupación del proyecto en producción, igual Java nos alertaría si encontrase algún problema.
Want to see more contributions, questions and answers from the community?