(1)如果函式的呼叫引數相同,則永遠返回相同的結果。它不依賴於程式執行期間函式外部任何狀態或資料的變化,必須只依賴於其輸入引數。
(2)該函式不會產生任何可觀察的***,例如網路請求,輸入和輸出裝置或資料突變(mutation)。
這就是純的函式。 如果乙個函式符合上述 2 個要求,它就是純函式。
純函式在函式式程式設計中被大量使用。諸如 reactjs 和 redux 等優質的庫都使用了純函式。
乙個可以被觀察的***是在函式內部與其外部的任意互動。這可能是在函式內修改外部的變數,或者在函式裡呼叫另外乙個函式等。
注: 如果純函式呼叫純函式,則不產生***依舊是純函式。
純函式的例子
function priceaftertax
(productprice)
它符合我們所說的兩條純函式的定義。不依賴於任何外部輸入,不改變任何外部資料、沒有***。
即使你用同樣的輸入執行執行這個函式 100,000,000 次它依舊產生同樣的結果。
非純函式的例子
var tax =20;
function calculatetax
(productprice)
其中函式的計算結果取決於外部 tax 變數,而純函式不能依賴外部變數。它沒有滿足定義中的第乙個要求,因此這個函式是不純的。
方便測試
使用純函式的乙個主要好處是它們可以直接測。 如果傳入相同的引數,它們將始終產生相同的結果。
方便維護和重構
正確地使用純函式可以產生更加高質量的**
純虛函式的應用
純虛函式的定義 在c 中,只有虛函式才能被宣告為純虛函式,語法格式為 virtual 返回值型別 函式名 函式引數 0 其中,純虛函式沒有函式體,只有函式宣告,也就是在類中的虛成員函式後面加上 0,來表示這是乙個純虛函式。2.純虛函式的應用 包含純虛函式的類稱為抽象類,所謂的抽象類也就是所無法被例項...
select 函式及其應用
select 函式用於在非阻塞中,當乙個套接字或一組套接字有訊號時通知你,系統提供select函式來實現多路復用輸入 輸出模型,所在的標頭檔案為 include和 include原型 int select int maxfd,fd set rdset,fd set wrset,fd set exse...
雜湊函式及其應用
雜湊,英文hash,也有直接音譯為 雜湊 的,就是把任意長度的輸入 又叫做預對映,pre image 通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來確定唯一的輸入值。簡單...