10 4 第十章小結

2021-06-28 00:17:48 字數 518 閱讀 2678

10.4 第十章小結

在這一章,我們**了與函式程式效率有關的問題,討論了用函式方式處理大量資料。因為大多數函式程式使用遞迴實現,這一章的很大一部分就是圍繞這個主題。

可以看到,使用遞迴的**,一定要仔細,避免由於遞迴太深,引起堆疊溢位的錯誤。在本章開頭,我們討論了一種稱為尾遞迴的技術,它可用來重寫我們熟悉的列表處理函式(如map and filter),能避免堆疊溢位。單靠尾遞迴,不能解決所有問題,所以,我們還討論了連續,並用來寫了乙個簡單的樹處理函式的健壯版本。

我們還**了優化處理函式效能的技術。特別是,我們看到了記憶化,能夠快取沒有***的函式結果。有效的優化依賴複雜性分析,所以,我們討論了函式式資料結構和效能特點。在選擇演算法和操作時要小心,因為,一些細微的差別,比如,是在函式式列表的頭,還是在列表尾新增元素,可能顯著影響效能。我們還討論了陣列, 它不是主要的函式式資料結構,但如果我們使用得當,也可以用於函式方式。

在下一章,我們將繼續**在函式語言中,實現演算法的常見技巧。下一章的許多主題都涉及到使用不可變資料型別,以及函式程式設計的數學的清晰度。

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...

第十章 屬性

目錄 10.1 無參屬性 10.2 有參屬性 10.3 呼叫屬性訪問器方法時的效能 10.4 屬性訪問器的可訪問性 10.5 泛型屬性訪問器方法 物件導向設計和程式設計的重要原則之一就是資料封裝,意味著型別的字段不應該公開,否則很容易因為不恰單使用欄位而破壞物件的狀態。可將屬性想象成智慧型字段,即背...