iOS開發--泛型


一. 泛型函數

1.單一占位符泛型函數

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

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

    

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

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

 

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

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

 

二.泛型類

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

 

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM