Swift學習筆記系列 (23)泛型

2021-07-04 17:00:34 字數 693 閱讀 9620

tags: swift 學習筆記

感慨一下:泛型這一章很亂,很零碎,很難總結。

避免重複**、增加靈活性

所有型別

泛型是另外一種引數,引數表示的是型別,泛型小可以用在函式上,大可用在型別定義上。這裡「型別」不包括協議,協議定義不能直接採用泛型,可以採用關聯型別。

函式引數的型別也是引數的函式叫做泛型函式。

這些表示引數型別的引數叫做佔位型別名稱或者型別引數。

採用了型別引數的型別。

對泛型型別擴充套件

擴充套件中可以繼續使用原來的型別引數名稱,無需再定義。

當定義乙個協議時,有時需要在協議定義中宣告乙個或多個關聯型別。乙個關聯型別為在協議中用到的型別提供了佔位名字(或者稱為別名)。直到協議被實現的時候關聯型別才會被指定為實際的型別。使用typealias關鍵字指定關聯型別。

定義了關聯型別的協議實現

非泛型實現

泛型實現

作用 作為函式的引數型別;

作為函式的返回值;

作為函式體內的型別注釋;

採用有含義的名字;

預設的名字有: t,u,v;

大駱駝命名法;

限制型別引數中的型別是特定型別的子型別i

進一步限制型別

swift 筆記 二十 泛型

泛型 泛型是為了解決在針對不同資料型別,而做了同一種功能的操作導致的每個型別我們都要寫乙份 的問題。有了泛型,我們可以只寫乙份邏輯 而適應於不同的資料型別。func swapint inout num1 int,inout num2 int func swapdouble inout num1 do...

swift 筆記 二十 泛型

泛型 泛型是為了解決在針對不同資料型別。而做了同一種功能的操作導致的每乙個型別我們都要寫乙份 的問題。有了泛型,我們能夠僅僅寫乙份邏輯 而適應於不同的資料型別。func swapint inout num1 int,inout num2 int func swapdouble inout num1 ...

Swift學習筆記 三十五 泛型 下

定義乙個協議時,宣告乙個或多個關聯型別作為協議定義的一部分將會非常有用。關聯型別為協議中的某個型別提供 乙個佔位 符名稱,其代表的實際型別在協議被遵循時才會被指定。關聯型別通過 associatedtype 關鍵字來指定。下 例子定義 乙個 container 協議,該協議定義了乙個關聯型別 ite...