package lambdasinaction.chap14;
import java.util.function.DoubleUnaryOperator;
public class Currying {
public static void main(String[] args) {
DoubleUnaryOperator convertCtoF = curriedConverter(9.0/5, 32);
DoubleUnaryOperator convertUSDtoGBP = curriedConverter(0.6, 0);
DoubleUnaryOperator convertKmtoMi = curriedConverter(0.6214, 0);
System.out.println(convertCtoF.applyAsDouble(24));
System.out.println(convertUSDtoGBP.applyAsDouble(100));
System.out.println(convertKmtoMi.applyAsDouble(20));
DoubleUnaryOperator convertFtoC = expandedCurriedConverter(-32, 5.0/9, 0);
System.out.println(convertFtoC.applyAsDouble(98.6));
}
static double converter(double x, double y, double z) {
return x * y + z;
}
static DoubleUnaryOperator curriedConverter(double y, double z) {
return (double x) -> x * y + z;
}
static DoubleUnaryOperator expandedCurriedConverter(double w, double y, double z) {
return (double x) -> (x + w) * y + z;
}
}