
1. 恒等函式
1.1. 在代數中,恒等函式指的是函式f(x) = x
1.2. 恒等邏輯與getNumbers()和assembleWidgets()的問題域解耦,因為恒等邏輯和問題域是正交的,或者說是獨立的
2. 型別引數
2.1. 將不同函式的區別,即它們的實參型別引數化
2.2. 一個泛型名稱的識別符號,用作客戶端在創建泛型實體時指定的具體型別的占位符
3. 可選型別
3.1. 包含某個型別T的值,或者不包含任何內容
3.2. Optional實作
3.3. 當處理沒有賦值的情況時,使用的邏輯與該值的實際型別并沒有關系
4. 泛型函式 泛型類
4.1. 泛型函式(value:T) => T,它的型別引數是T
4.2. 當為T指定了實際型別時,就創建了具體函式
5. 泛型型別
5.1. 引數化一個或多個型別的泛型函式、類、介面等
5.2. 允許我們撰寫能夠使用不同型別的通用代碼,從而實作高度的代碼重用
5.2.1. 讓代碼的組件化程度更高
5.2.2. 創建獨立的、可重用的組件
5.2.3. 使用泛型來避免復制代碼
5.2.3.1. 復制從來不是一個好的選擇
5.3. Optional型別
5.3.1. 一個簡單但是強大的泛型型別
6. 資料結構
6.1. 資料自身
6.2. 資料的形狀
6.2.1. 二叉樹中,以分層的方式布局資料,每個元素最多有兩個子元素
6.2.2. 在鏈表中,資料是順序布局的,一個元素在前一個元素的后面
6.3. 一組保留形狀的操作
6.3.1. 用來添加或移除元素
6.4. 資料結構把形狀賦予資料,而并不需要知道這些資料是什么, 使這些結構成為泛型,就允許為各種值重用形狀,從而大大減少需要撰寫的代碼量
6.5. 兩個關注點
6.5.1. 資料
6.5.1.1. 資料的型別
6.5.1.2. 資料結構的實體保存的實際值
6.5.2. 資料的形狀和保留形狀的操作
6.5.3. 解耦關注點
7. 泛型資料結構
7.1. 如果能夠從庫中選擇泛型資料結構,就應該使用庫中的泛型資料結構
7.2. 處理資料的布局、形狀和任何保留形狀的操作
7.3. 資料布局的職責交給獨立于任何實際資料內容的泛型資料結構
7.4. 與資料是什么沒有關系
7.5. 不能解決全部問題
7.5.1. 仍然需要遍歷它們
7.6. 對于分離獨立的關注點很有用
8. 迭代器
8.1. 能夠用來遍歷資料結構的一個物件
8.1.1. 遍歷策略和資料結構之間并不需要是一一對應的關系
8.1.2. 提供了一個標準介面,將資料結構的實際形狀對客戶端隱藏起來
8.1.2.1. 為遍歷資料結構提供了公共介面
8.2. 把資料結構和演算法連接起來的“膠水”
8.3. 迭代器模式十分有用,所以得到了原生支持
8.3.1. Java中的等效介面也叫作Iterator
8.3.2. 在C#中,等效的介面是IEnumerator
8.4. 在定義資料結構時,應該確保它實作了Iterable
8.5. Iterator代表一個迭代器
8.6. Iterable代表可迭代的東西
8.7. 使用生成器可實作迭代器
8.8. 并非必須是有限的,它們可以無限產生值
9. 生成器
9.1. 是一個可恢復的函式,使用yield陳述句回傳控制權,并且當再次被呼叫時,會從上一次離開的狀態恢復執行
9.2. 生成器回傳一個IterableIterator,所以我們可以直接在for...of回圈中使用它們,或者用它們來實作一個資料結構的Iterable介面
9.2.1. 大部分主流編程語言都有一個等效的特殊型別,用來支持一個能夠遍歷元素的for回圈
9.3. 在實作遍歷邏輯時,考慮使用yield
9.3.1. 它通常可以讓代碼變得更加整潔
9.3.2. Java中沒有內置的yield陳述句
9.3.3. C#支持yield陳述句
10. 資料流
10.1. 無限資料流的例子
10.1.1. 從鍵盤讀取字符
10.1.2. 從網路連接獲取資料
10.1.3. 收集傳感器資料
10.2. 把函式鏈接成處理管道,在可能無限的資料流上運行它們
11. 處理管道
11.1. 通過使用接受和回傳迭代器的函式,能夠構建處理管道
11.1.1. 一些函式,它們接受一個迭代器作為實參,進行一些處理,然后回傳一個迭代器
11.1.2. 這種函式可以鏈接起來,在收到資料時處理資料
11.2. 反應式編程的基礎
11.3. 迭代器是關鍵,因為它們使我們能夠逐個處理值
11.4. 是延遲計算的
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/542175.html
標籤:設計模式
