函數柯裏化是一個概念將具有多個參數的函數分解為多個具有單個參數的函數,以使輸出相同。換句話說,它是一種將multi-valued參數函數簡化為single-valued參數multi-functions的技術。
考慮這個例子來明確概念:
柯裏化將高階函數分解為一係列較小的級聯函數,這些函數接受一個參數並返回一個函數,除了最後一個級聯函數返回所需值之外。例如:設一個函數映射為
柯裏化上麵的函數會產生
因此
Map來自
到一個函數,該函數又映射自
到
上述數學表達式也可以表示為:
因此,
下麵是 Java 中的一些示例來演示函數柯裏化:
示例 1:使用函數柯裏化將 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 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));
}
}
輸出:
示例 2:使用函數柯裏化將 2 個數字相乘Add 2, 3 :5
// 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));
}
}
輸出:
示例 3:使用函數柯裏化將 3 個數字相加Multiply 2, 3 :6
// 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
相關用法
- Java Currency getAvailableCurrencies()用法及代碼示例
- Java Currency getDisplayName()用法及代碼示例
- Java Currency getNumericCode()用法及代碼示例
- Java Currency getNumericCodeAsString()用法及代碼示例
- Java Currency getSymbol()用法及代碼示例
- Java Currency getCurrencyCode()用法及代碼示例
- Java Currency getDefaultFractionDigits()用法及代碼示例
- Java Currency getInstance()用法及代碼示例
- Java Currency getSymbol用法及代碼示例
- Java Currency toString()用法及代碼示例
- Java Calendar Clone()用法及代碼示例
- Java Calendar ComputeFields()用法及代碼示例
- Java Calendar after()用法及代碼示例
- Java Calendar equals()用法及代碼示例
- Java Calendar getAvailableCalendarTypes()用法及代碼示例
- Java Calendar getCalendarType()用法及代碼示例
- Java Calendar getWeekYear()用法及代碼示例
- Java Calendar getWeeksInWeekYear()用法及代碼示例
- Java Calendar isWeekDateSupported()用法及代碼示例
- Java Calendar setMinimalDaysInFirstWeek()用法及代碼示例
- Java Calendar setTimZone()用法及代碼示例
- Java Calendar setWeekDate()用法及代碼示例
- Java Calendar toInstant()用法及代碼示例
- Java Character codePointAt()用法及代碼示例
- Java Character codePointBefore()用法及代碼示例
注:本文由純淨天空篩選整理自psil123大神的英文原創作品 Currying Functions in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。