天天看點

窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型

窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型
窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型

  swift中也是支援泛型的,在許多現代程式設計語言,如c++, java, c#也都是支援泛型的。泛型,從表面的名字來看,就是寬泛的資料類型。使用泛型定義的方法,類,結構體,協定等可以支援不同的資料類型。泛型其實就是資料類型的占位符。當然這個占位符的名字有你來定,你定義的這個占位符就是資料類型的變量,你傳給他什麼類型,那麼這個泛型占位符就代表什麼類型。這樣說來泛型了解起來就不困難了。

  今天部落格中的内容算是比較簡單,也是比較基礎,雖簡單,但失其重要性。今天部落格中就通過一些示例來窺探一下泛型的使用方法和使用場景。無論你是在函數,類,協定,延展等場景中使用泛型。他們有一個共性,同時也是泛型的特點“高度重用性”。能寫出高度重用的東西,在程式設計中是灰常令人興奮的一件事情。

  一. 泛型函數

    1.單一占位符泛型函數

    下面就使用一個經典案例:兩個數值進行交換。來使用泛型,寫一個通用的函數,這個函數的功能就是交換兩個變量的值。在swift中不允許類型隐式轉換,也就是說,如果你定義的該函數是交換兩個整數的,那麼如果你想使用他來交換浮點類型的資料,那麼對不起,是不允許這樣做的。為了寫個通用的函數,那接下來就是泛型出場的時候了。

    下面就是使用泛型來定義一個交換兩個變量的值的函數,該函數如下圖所示。其中mycustometype就是在函數中定義的泛型占位符,改占位符表示傳入的參數是什麼類型,那麼mycustometype就是什麼類型。這樣一來,使用泛型定義的該函數就是通用的了。在該函數中隻用到了一個mycustometype,也就是下方的函數還是有一定限制性,就是number1和number2的類型都是相同資料類型的,這種情況也是單一占位符泛型函數。

窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型

    

    調用上述函數來交換兩個字元串類型的值:

窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型

    同樣的函數,你還可以使用它來交換兩個整數,浮點數等等其他資料類型,下方就是交換的兩個整型的資料,也是沒有問題的。

窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型

    2.多個占位符的泛型函數

      這個是在上述函數中進行的擴充,泛型占位符允許是一個清單的形式出現的,也就是允許有多個不同的泛型占位符來代表不同的資料類型。也許說起來有些拗口,接下來就來個執行個體在函數中使用多個泛型占位符。具體執行個體如下所示。本質上允許在泛型占位符中添加多個泛型類型變量。下方的函數兩個參數的資料類型允許不同,因為其參數使用的是不同的泛型占位符,是以其類型允許是不同的。具體使用方式如下所示。

窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型

  二.泛型類

    泛型類,顧名思義,就是在類中使用泛型。在類中使用泛型,其實和函數中使用泛型是一樣的。就是在聲明類的時候,使用泛型占位符表示一個要處理的泛型即可。下方就是一個泛型類,其中有個泛型類型數組,還有一個列印該數組的方法,如下所示:

窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型

    上面是泛型類的定義,緊接着就是泛型類的使用了,下方是建立一個泛型類的執行個體,然後調用相應的方法,具體如下所示。

窺探Swift之使用Web浏覽器編譯Swift代碼以及Swift中的泛型

    上面是泛型類的定義與使用,泛型還可以應用于結構體,協定,延展等,其使用方法和泛型類是差不多的,要學會舉一反三。在本篇部落格中就不對泛型結構體,泛型協定,泛型延展,以及泛型的限制做過多的贅述了。