Swift文件Chapter 22 泛型

2022-09-19 12:48:07 字數 1104 閱讀 8699

泛型函式可以用於任何的型別。

泛型函式使用t作為佔位符,交換函式的泛型寫法是:

func swaptwovalues(_ a: inout t, _ b: inout t)
它不關心實際的型別,只是要求ab的型別相同。

我們使用t作為佔位符,可以作為引數型別,函式的返回型別,還可以用作函式主體中的注釋型別。可提供多個型別引數,將它們都寫在尖括號中,用逗號分開。

型別引數可以進行命名,例如字典dictionary中的keyvalue。當沒有實際的意義的時候,可以使用t,u,v等字母代替。一般使用大寫的駝峰命名法命名。

swift還允許自定義泛型型別。這些自定義類、結構體和列舉可以適用於任意型別,就像arraydictionary

對於泛型擴充套件的時候,不需要提供引數列表的定義,可以直接進行使用。

在乙個型別引數名後面放置乙個類名或者協議名,並用冒號進行分隔,來定義型別約束。泛型型別也可以使用這種方法。

func somefunction(somet: t, someu: u)
定義乙個協議時,可以宣告關聯型別作為協議的一部分。關聯型別為協議中的某個型別提供了乙個佔位符名稱,其代表的實際型別在協議被遵循時才會被指定。使用associatedtype關鍵字制定。

關聯型別協議也可以進行擴充套件。一旦型別實現了關聯型別協議,可以直接使用擴充套件指定協議。

assoicatedtype可以使用冒號後加入父類名或者協議名約束型別。

協議可以作為它自身的要求出現。

關聯型別新增約束通過定義乙個泛型where子句來實現。

你也可以使用泛型where子句作為擴充套件的一部分。

你可以在關聯型別後面加上具有泛型where的字句。

下標可以是泛型,它們能夠包含泛型where子句。

《程式設計實踐》chapter2

a b c c符號與b相同 若a,b,一正一負,c a b int a b 1 若a,b,同號,c a b a b 17 10 1.7 17 10 7 取模運算 17 10 1.7 17 10 317 10 1.7 17 20 有乙個除數時 17 10 3 運算方法等於 17 10,但結果的符號與1...

資料探勘 Chapter 2

本章 資料有什麼型別的屬性或字段組成?每個屬性具有何種型別的資料值 屬性 屬性是乙個資料字段,表示資料物件的乙個特徵。機器學習文獻更傾向於使用術語 特徵 而統計學家更源於使用術語 變數 資料探勘與資料庫的專業人士一般使用術語 屬性 屬性的種類 資料的基本統計描述 資料視覺化 層次視覺化 視覺化複雜物...

Chapter 2 工廠設計模式

和單例設計模式一樣,工廠設計模式也是屬於建立型模式。其主要作用是抽象了物件被建立時的具體細節,對外暴露乙個建立的方法,省去使用者new乙個物件的操作。乍一看,工廠設計模式只是抽象了乙個new物件的操作。其實,實際專案中new乙個物件的邏輯比較複雜,如果這個邏輯以後被修改了,那麼之前new出來的所有物...