有的小夥伴會問:博主,沒有Mac怎麼學Swift語言呢,我想學Swift,但前提得買個Mac。非也,非也。若是你想了解或者初步學習Swift語言的話,你能夠登陸這個網站:http://swiftstub.com/ 。該網站能夠在線運行出代碼結果,也能夠說這是一個在線的Playground。你能夠實時觀察你代碼的運行結果。若是你沒有Mac筆記本,那麼你只需打開你的瀏覽器,而後輸入上述網址,就能夠搞搞Swift這門語言了,灰常好用的呢。下方的截圖就是該網址打開的截圖。編程
上面若是算是工具性的網站的話,那麼接下來將會給你們介紹一個學習網站:http://swiftdoc.org 。該網站集成了Swift的各類東西,內容雖然是英文的,可是裏邊的東西仍是至關不錯的,裏邊的內容也會隨着Swift語言版本的更新而更新。若是你的英文比較好,那麼徹底能夠去這個網站中去汲取你的知識。下方是該網站的一個截圖,也是一個比較好的學習的地方。swift
Swift中也是支持泛型的,在許多現代編程語言,如C++, Java, C#也都是支持泛型的。泛型,從表面的名字來看,就是寬泛的數據類型。使用泛型定義的方法,類,結構體,協議等能夠支持不一樣的數據類型。泛型其實就是數據類型的佔位符。固然這個佔位符的名字有你來定,你定義的這個佔位符就是數據類型的變量,你傳給他什麼類型,那麼這個泛型佔位符就表明什麼類型。這樣說來泛型理解起來就不困難了。數組
今天博客中的內容算是比較簡單,也是比較基礎,雖簡單,但失其重要性。今天博客中就經過一些示例來窺探一下泛型的使用方法和使用場景。不管你是在函數,類,協議,延展等場景中使用泛型。他們有一個共性,同時也是泛型的特色「高度重用性」。能寫出高度重用的東西,在編程中是灰常使人興奮的一件事情。瀏覽器
一. 泛型函數編程語言
1.單一佔位符泛型函數函數
下面就使用一個經典案例:兩個數值進行交換。來使用泛型,寫一個通用的函數,這個函數的功能就是交換兩個變量的值。在Swift中不容許類型隱式轉換,也就是說,若是你定義的該函數是交換兩個整數的,那麼若是你想使用他來交換浮點類型的數據,那麼對不起,是不容許這樣作的。爲了寫個通用的函數,那接下來就是泛型出場的時候了。工具
下面就是使用泛型來定義一個交換兩個變量的值的函數,該函數以下圖所示。其中MyCustomeType就是在函數中定義的泛型佔位符,改佔位符表示傳入的參數是什麼類型,那麼MyCustomeType就是什麼類型。這樣一來,使用泛型定義的該函數就是通用的了。在該函數中只用到了一個MyCustomeType,也就是下方的函數仍是有必定約束性,就是number1和number2的類型都是相同數據類型的,這種狀況也是單一佔位符泛型函數。學習
調用上述函數來交換兩個字符串類型的值:網站
一樣的函數,你還可使用它來交換兩個整數,浮點數等等其餘數據類型,下方就是交換的兩個整型的數據,也是沒有問題的。spa
2.多個佔位符的泛型函數
這個是在上述函數中進行的擴充,泛型佔位符容許是一個列表的形式出現的,也就是容許有多個不一樣的泛型佔位符來表明不一樣的數據類型。也許提及來有些拗口,接下來就來個實例在函數中使用多個泛型佔位符。具體實例以下所示。本質上容許在泛型佔位符中添加多個泛型類型變量。下方的函數兩個參數的數據類型容許不一樣,由於其參數使用的是不一樣的泛型佔位符,因此其類型容許是不一樣的。具體使用方式以下所示。
二.泛型類
泛型類,顧名思義,就是在類中使用泛型。在類中使用泛型,其實和函數中使用泛型是同樣的。就是在聲明類的時候,使用泛型佔位符表示一個要處理的泛型便可。下方就是一個泛型類,其中有個泛型類型數組,還有一個打印該數組的方法,以下所示:
上面是泛型類的定義,緊接着就是泛型類的使用了,下方是建立一個泛型類的實例,而後調用相應的方法,具體以下所示。
上面是泛型類的定義與使用,泛型還能夠應用於結構體,協議,延展等,其使用方法和泛型類是差很少的,要學會觸類旁通。在本篇博客中就不對泛型結構體,泛型協議,泛型延展,以及泛型的約束作過多的贅述了。