Java Lambdas: Función Function

Breve explicación

La función Function<T, R> es una interfaz funcional en Java que acepta un argumento de tipo T y devuelve un resultado de tipo R. Se utiliza cuando necesitamos transformar o mapear un valor de entrada en otro tipo de valor de salida. El método funcional de Function es apply(T t).

Ejemplo 1: Versión completa del cuerpo de la función Lambda
Java
package org.example.tinajero;

import java.util.function.Function;

public class LambdaFunctionExample {

    public static void main(String[] args) {
    	
        /*
         * 🛠️ Function
         * 💡 Recibe un valor de tipo T y retorna un valor de tipo R.
         */

        // Creamos una Function que convierte una cadena a su longitud
        Function<String, Integer> stringLength = (str) -> {
            // Cuerpo completo: retorna la longitud de la cadena
            return str.length();
        };

        // Usamos la Function para obtener la longitud de "Hola Mundo"
        System.out.println("Longitud de 'Hola Mundo': " + stringLength.apply("Hola Mundo"));

        // Creamos otra Function que convierte una temperatura en grados Celsius a Fahrenheit
        Function<Double, Double> celsiusToFahrenheit = (celsius) -> {
            // Cálculo completo de la conversión
            return (celsius * 9/5) + 32;
        };

        // Aplicamos la Function para convertir 25°C a Fahrenheit
        System.out.println("25°C en Fahrenheit: " + celsiusToFahrenheit.apply(25.0));
        
    }
    
}

Ejemplo 2: Reducción de la expresión Lambda
Java
package org.example.tinajero;

import java.util.function.Function;

public class LambdaFunctionExampleSimplified {

    public static void main(String[] args) {
    	
        /*
         * 🛠️ Function
         * 💡 Recibe un valor de tipo T y retorna un valor de tipo R.
         */

        // Versión simplificada de la Function que convierte una cadena a su longitud
        Function<String, Integer> stringLength = str -> str.length();

        // Ejecutamos la Function para obtener la longitud de "Java Lambda"
        System.out.println("Longitud de 'Java Lambda': " + stringLength.apply("Java Lambda"));

        // Versión simplificada de la Function que convierte Celsius a Fahrenheit
        Function<Double, Double> celsiusToFahrenheit = celsius -> (celsius * 9/5) + 32;

        // Aplicamos la Function para convertir 30°C a Fahrenheit
        System.out.println("30°C en Fahrenheit: " + celsiusToFahrenheit.apply(30.0));
        
    }
    
}