純函數
一個函數的返回結果只依賴于它的參數,且執行中無副作用
怎么理解呢?我們舉兩個例子就很好理解拉??
- 結果只依賴參數:
int a = 1;
private int method(int b){
return a+b;
}//非純函數,函數返回結果還依賴與函數外的int a
- 執行中無副作用
static outside = 2
private int method(int a,int b ){
print a+b; //副作用對外輸出
outside += a; //副作用修改了靜態變量的值
return a+b;
}//非純函數
純函數很嚴格,也就是說你幾乎除了計算數據以外什么都不能干,計算的時候還不能依賴除了函數參數以外的數據。
那么純函數有什么用呢?
為了每次操作都返回一個全新的數據(獨立,純凈),然后使得熱重載和時間旅行這些功能能夠使用