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关键字

Swift中protocol的功能比OC中强大很多,不仅能再class中实现,同时也适用于struct、enum。
使用 mutating 关键字修饰方法是为了能在该方法中修改 struct 或是 enum 的变量,在设计接口的时候,也要考虑到使用者程序的扩展性。所以要多考虑使用mutating来修饰方法。


import UIKit

struct GenericArr<T> {
    var items = [T]()  //创建数组
    
    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)
    }

}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。