當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Java Currying Functions用法及代碼示例

函數柯裏化是一個概念將具有多個參數的函數分解為多個具有單個參數的函數,以使輸出相同。換句話說,它是一種將multi-valued參數函數簡化為single-valued參數multi-functions的技術。 考慮這個例子來明確概念:柯裏化將高階函數分解為一係列較小的級聯函數,這些函數接受一個參數並返回一個函數,除了最後一個級聯函數返回所需值之外。例如:設一個函數映射為f:(u, v) -> w柯裏化上麵的函數會產生g:(u->(v->w))因此gMap來自u到一個函數,該函數又映射自vw上述數學表達式也可以表示為:{g(u)}(v)=f(u, v)因此,curry(f) = g 下麵是 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)); 
  
        } 
} 
輸出:
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


相關用法


注:本文由純淨天空篩選整理自psil123大神的英文原創作品 Currying Functions in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。