swift初學之泛型體驗

泛型對於強類型語言來講是一種便捷開發的方式,只要遵循個人規範,你就能夠調用個人方法,科技又一次遵循了工業時代的理念,相似於接口,又高於接口的一種編程方式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條件語句,進一步約束,待續。。。。
相關文章
相關標籤/搜索