函數語言程式設計 - 純函式



如果函式滿足以下兩個條件,則該函式被認為是純函式 −

  • 它始終對給定輸入返回相同的結果,並且其結果完全取決於傳遞的輸入。

  • 它沒有副作用,這意味著它不會修改呼叫者實體的任何狀態。

示例 - 純函式

public class FunctionTester {    
   public static void main(String[] args) {
      int result = sum(2,3);
      System.out.println(result);
  
      result = sum(2,3);
      System.out.println(result);
   }
   static int sum(int a, int b){
      return a + b;
   }
}

輸出

5
5

此處 sum() 是一個純函式,因為它在不同時間傳遞 2 和 3 作為引數時始終返回 5,並且沒有副作用。

示例 - 非純函式

public class FunctionTester {
   private static double valueUsed = 0.0; 
   public static void main(String[] args) {
      double result = randomSum(2.0,3.0);
      System.out.println(result);
      result = randomSum(2.0,3.0);
      System.out.println(result);
   }
   
   static double randomSum(double a, double b){
      valueUsed = Math.random();       
      return valueUsed + a + b;
   }
}

輸出

5.919716721877799
5.4830887819586795

此處 randomSum() 是一個非純函式,因為當在不同時間傳遞 2 和 3 作為引數時,它會返回不同的結果,並且也會修改例項變數的狀態。

廣告
© . All rights reserved.