Java 卷曲函数与实例
函数卷曲是一个概念,它将一个有许多参数的函数分解成许多只有一个参数的函数,使其输出相同。换句话说,它是一种将一个多值参数的函数简化为单值参数的多函数的技术。
考虑一下这个例子,以明确这个概念。
咖喱法将高阶函数分解成一系列较小的级联函数,这些函数接收一个参数并返回一个函数,除了最后一个级联函数返回所需的值。
比如说。
设有一个函数,其映射为
追踪上述函数将产生
因此,从映射到一个函数,而这个函数又从映射到
上述数学表达式也可以表示为:
因此,
下面是一些Java中的例子来演示函数卷积。
例子1:使用函数卷取法计算两个数字的加法
// Java Program to demonstrate Function Currying
import java.util.function.Function;
public class GFG {
public static void main(String args[])
{
// Using Java 8 Functions
// to create lambda expressions for functions
// and with this, applying Function Currying
// Curried Function for Adding u & v
Function<Integer,
Function<Integer, Integer> >
curryAdder = u -> v -> u + v;
// Calling the curried functions
// Calling Curried Function for Adding u & v
System.out.println("Add 2, 3 :"
+ curryAdder
.apply(2)
.apply(3));
}
}
输出:
Add 2, 3 :5
例子2:用函数卷取法计算2个数的乘法
// Java Program to demonstrate Function Currying
import java.util.function.Function;
public class GFG {
public static void main(String args[])
{
// Using Java 8 Functions
// to create lambda expressions for functions
// and with this, applying Function Currying
// Curried Function for Multiplying u & v
Function<Integer,
Function<Integer, Integer> >
curryMulti = u -> v -> u * v;
// Calling the curried functions
// Calling Curried Function for Multiplying u & v
System.out.println("Multiply 2, 3 :"
+ curryMulti
.apply(2)
.apply(3));
}
}
输出:
Multiply 2, 3 :6
例子3:用函数卷曲做3个数的加法
// Java Program to demonstrate Function Currying
import java.util.function.Function;
public class GFG {
public static void main(String args[])
{
// Using Java 8 Functions
// to create lambda expressions for functions
// and with this, applying Function Currying
// Curried Function for Adding u, v & w
Function<Integer,
Function<Integer,
Function<Integer, Integer> > >
triadder = u -> w -> v -> u + w + v;
// Calling the curried functions
// Calling Curried Function for Adding u, v & w
System.out.println("Add 2, 3, 4 :"
+ triadder
.apply(2)
.apply(3)
.apply(4));
}
}
输出:
Add 2, 3, 4 :9