在數學和計算機科學中,純函數(Pure Function)的定義如下:
數學定義:
一個純函數是一個數學函數,它滿足以下兩個條件:
1. 對于相同的輸入參數,總是產生相同的輸出結果(無副作用)。
2. 函數的執行不產生可觀察的副作用,即函數的執行不改變外部狀態,不依賴于外部狀態的變化。
計算機科學定義:
在計算機科學中,純函數通常指的是一個函數,它符合以下特性:
1. 確定性(Deterministic):給定相同的輸入,總是返回相同的輸出。
2. 無副作用(No Side Effects):函數的執行不修改外部狀態,不進行I/O操作(如讀寫文件、打印到控制臺、修改全局變量等),也不依賴于外部狀態(如當前時間、隨機數生成器等)。
純函數的特點使得它們在程序設計中非常有用,因為它們更容易理解和測試。在函數式編程中,純函數是核心概念之一,因為它們有助于減少程序中的不可預測性和復雜性。
以下是一個純函數的簡單示例(以JavaScript代碼為例):
```javascript
function add(a, b) {
return a + b;
}
```
這個 `add` 函數是純函數,因為它:
- 對于相同的輸入 `a` 和 `b`,總是返回相同的輸出 `a + b`。
- 不修改任何外部狀態,也不依賴于外部狀態。
相比之下,以下函數不是純函數:
```javascript
let counter = 0;
function increment() {
counter += 1;
return counter;
}
```
這個 `increment` 函數不是純函數,因為它:
- 修改了外部變量 `counter` 的狀態。
- 每次調用時,即使輸入相同(實際上沒有輸入),返回的輸出也可能不同,因為它依賴于外部狀態 `counter`。
標簽: 純函數