Swift泛型和泛型函數

來源:互聯網
上載者:User

標籤:swift泛型和泛型函數


泛型(generic)可以使我們在程式中定義一些可變部分,在啟動並執行時候指定,使用泛型可以最大程度重用代碼,保護類型的安全以及提高效能。



1、泛型函數


        在函數名後面加<T>,參數類型也被聲明為T,T成為預留位置,函數在每次調用時傳入實際的參數類型才決定T的類型


        func log4<T>(msg : T) {

                println(msg)


}

        


    log4(3)

    log4("sorry")

    log4(1.02)


    如果有多個不同類型,可以使用其它大寫字母,一般習慣使用U,多個預留位置使用逗號,隔開:


    樣本如下:

    func isEquals<T,U>(a :T,b : U) ->Bool {


            

}


    預留位置不僅可以替代參數類型,還可以替代傳回值類型:


    func isEquals<T,U>(a: T,b:U) -> T{}




2、泛型約束


        有些預留位置必須遵守某種協議,及T預留位置後面添加冒號和協議類型,這種表示方式成為泛型約束,它能夠替換T的類型。


    例如一個比較函數:


    func isEquals<T>(a : T, b : T) ->Bool {

        return(a==b)

}

    上面的函數在編譯時間會出錯,這是因為並不是所有類型都具有可比性,T表示的類型必須遵守Comparable協議實現的類型,comparable協議表示可比較的:


    修改如下:

    

        func isEquals<T:Comparable>(a : T, b : T) -> Bool {

            return (a==b)


}




本文出自 “平凡之路” 部落格,請務必保留此出處http://linjohn.blog.51cto.com/1026193/1620386

Swift泛型和泛型函數

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.