在這邊我們再次針對純函式做個簡單的整理,一個函式若要成立純函式需要包含以下特性:
這些要素可以簡單統整為:「同樣的輸入會有同樣的輸出且不產生副作用之函式」。
透過使用純函式的方式來封裝我們的取用資料的方式,有非常多的優點:
當然除了純函式我們在這個章節也聊了很多其他內容:
關於純函式到此告一個段落,在下個章節中,我們要來聊聊 FP 中,一個非常重要的概念:柯里化(Curring),就讓我們下章見吧!
不帶有自身的狀態
純函式可以帶有狀態,只是那個狀態不會(或不能)變動,什麼時候一個純函式會帶有狀態?Closure 是一個例子,使用案例之一是,你可以將一個運算的結果用 Closure 保存下來,後續基於該運算的結果繼續其他運算,因為純函數式裡 immutable 的天性,Closure 保存下來的狀態,不用擔心會被變更,運算也就完全能依照輸入,產生對應的輸出,一樣是純函式。
純函數式沒有狀態是對函數式設計最常見的誤解之一,一個真實系統不可能沒有狀態,只是在純函數式的部份,一個狀態構成就不會再被改變,如果系統需要進入新的狀態,不是改變原本承載狀態的載體,而是建立一個新的載體,承載新的狀態。