diff --git a/src/main/java/_7/_1/Function.java b/src/main/java/_7/_1/Function.java new file mode 100644 index 0000000..950536d --- /dev/null +++ b/src/main/java/_7/_1/Function.java @@ -0,0 +1,6 @@ +package _7._1; + +public interface Function { + G calculate(T x); +} + diff --git a/src/main/java/_7/_1/LambdaTest.java b/src/main/java/_7/_1/LambdaTest.java new file mode 100644 index 0000000..67271da --- /dev/null +++ b/src/main/java/_7/_1/LambdaTest.java @@ -0,0 +1,32 @@ +package _7._1; + +public class LambdaTest { + + public static void main(String[] args) { + Function id = (x) -> x; + + Function inverse = (x) -> x*-1; + + Function timesTen = (x) -> x*10; + + Function divideByPi = (x) -> x/Math.PI; + + Function round = Math::round; + + + @SuppressWarnings("unchecked") + Function chain = makeChain(new Function[] {inverse, id, timesTen, divideByPi}); + + System.out.println(round.calculate((chain.calculate(5.5)))); + } + + private static Function makeChain(final Function[] functions) { + return (x) -> { + for (Function i : functions) { + x = i.calculate(x); + } + return x; + }; + } + +}