package p25_lambdy;

import java.util.Arrays;

import static p25_lambdy.MojFrameworkFunkcyjny.zastosujFunkcjeDoTablicy;

public class UzycieFrameworku {
    // Tutaj występuję w roli programisty, który korzysta z biblioteki.
    // W tym miejscu już nie musimy używać nazw FunkcjaLiczbowa i oblicz,
    // tylko przekazujemy funkcję do ogólnej operacji wpisując wyrażenie lambda.

    // Tak właśnie korzysta się z lambd w połączenie ze streamami i innymi rozwiązaniami obecnymi w Javie.

    public static void main(String[] args) {
        double[] a = {0, 1, 2, -5, 15, 35};
        System.out.println(Arrays.toString(a));

        zastosujFunkcjeDoTablicy(a, x -> x+1);
        System.out.println(Arrays.toString(a));

        zastosujFunkcjeDoTablicy(a, x -> x*x);
        System.out.println(Arrays.toString(a));

        zastosujFunkcjeDoTablicy(a, arg -> Math.sqrt(arg));
        System.out.println(Arrays.toString(a));

        zastosujFunkcjeDoTablicy(a, Math::sqrt);
        System.out.println(Arrays.toString(a));

    }
}
