swift 4.0 泛型

泛型


import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
       pringElemtFormArr(a: stringArr)
        pringElemtFormArr(a: intArr)
        pringElemtFormArr(a: doubleArr)
        
        
        donoting(x: 123)
        donoting(x: "123")
        donoting(x: true)
        
        
    }

    var stringArr = ["hi","hello","bye"]
    var intArr = [1,2,3]
    var doubleArr = [1.1,2.2,3.3]

    //普通方法
    func printAreingArr(a:[String]) {
        for s in a {
            print(s)
        }
    }

    func pringIntArr(a:[Int]) {
        for i in a {
            print(i)
        }
    }
    
    
    //泛型的方法 T代表任意類型
    func pringElemtFormArr<T>(a:[T]) {
        for element in a {
            print(element)
        }
    }
    func donoting<T>(x:T) -> T {
        return x
    }
}

Swift中mutating關(guān)鍵字

Swift中protocol的功能比OC中強大很多,不僅能再class中實現(xiàn),同時也適用于struct、enum。
使用 mutating 關(guān)鍵字修飾方法是為了能在該方法中修改 struct 或是 enum 的變量,在設(shè)計接口的時候,也要考慮到使用者程序的擴展性。所以要多考慮使用mutating來修飾方法。


import UIKit

struct GenericArr<T> {
    var items = [T]()  //創(chuàng)建數(shù)組
    
    mutating func push(item:T) {
        items.append(item)
    }
}
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
       var myPhone = ["ipone5","iphone6","iphone7"]
        var LisaArr = GenericArr(items: myPhone)
        LisaArr.push(item: "iphon7 plus")
        print( LisaArr.items)
    }

}


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容