條目三十九 確保判別式是「純函數」

《條目三十九 確保判別式是「純函數」》

一個判別式(predicate)是一個返回值爲bool類型(或者能夠隱式地轉換爲bool類型)的函數。函數

一個純函數(pure function)是指返回值僅僅依賴於其參數的函數。純函數所能訪問的數據應該僅侷限於參數以及常量(在函數生命期內不會被改變設計

判別式類(predicate class)是一個函數子類,它的operator()函數是一個判別式,也就說是,它的operator()返回true或者false。對象

一個精心設計的判別式類應該保證其operator()函數徹底獨立於mutable數據成員、非const的局部static對象、非const的類static對象、名字空間域中的非const對象,以及非const的全局對象。io

究其緣由就是由於是值傳遞的,若是不是純函數,屢次調用判別式會被外部影響。table

相關文章
相關標籤/搜索