泛型對於強類型語言來講是一種便捷開發的方式,只要遵循個人規範,你就能夠調用個人方法,科技又一次遵循了工業時代的理念,相似於接口,又高於接口的一種編程方式java
在java中泛型已經應用很普遍了,那麼在swift中泛型也是那麼的給力編程
//交換兩個int數值 var first = 55 var second = 100 func swapIntValues(a: Int, b: Int){ let temp = a a = b b = a } //調用函數 swapIntValues(&first, &second) //由於在swift基本類型傳遞時是按照值傳遞的,就是賦值一個變量副本傳遞給函數,函數結束時,並不會影響原先的值,所//以這裏利用&來去它的引用,這樣first= 100 second = 55 //當須要交換兩個字符串時,又要寫一個交換字符串的方法,這麼不環保的作法,誰能容忍,看泛型走起 func swapValues<T>(a: T, b: T){ let temp = a a = b b = temp } //這裏已經很明確了 //泛型約束,只有泛型可能還不能知足必定的功能,假如在數組中查找是否包含一個,返回這個對象的索引 var data = ["小強","小強250","小強二"] func findIndex<T>(array: [T], b: T) -> Int?{ //返回類型是一個可選值 for (index,value) in enumerate(array) { if b == value { return index } } return nil } if let index = findIndex(array: data,b: "小強"){ //可選值能夠用做boolean判斷 println("\(index)") //輸出 0 } //這是對String的判斷用==,然而有時可能要比較兩個自定義對象,那麼在swift中能夠經過一個泛型約束來約束這個類 //實現Equatable ,實現這個協議,能夠進行 == 和!=的比較,全部的swift標準類型自動支持Equatable協議 //上面的方法能夠變成 func findIndex<T: Equatable>(array: T[],b: T) -> Int?{ for (index,value) in enumerate(array) { if b == value { return index } } return nil } //類型約束還能夠加where條件語句,進一步約束,待續。。。。