理顺iOS(一)泛型

1.1 泛型介绍

泛型的概念最早出自C++,Swift的泛型与其设计思路相同,与Java不同。

优缺点

C++与Swift:是编译时多态技术,编译器确定类型,运行时不需要计算。
缺点:生成的机器码二进制包大一些,虽执行快但可能有更多I/O。
Java:是运行时多态,运行时才确定的。
缺点:运行时才能看到。

使用泛型让代码更简洁和安全。减少强制转换以及其带来的出错风险。

let nameInt = [111,222,333]
let nameString = ["Jack","John","Joker"]
func getName(nameList: [T]){
    for name in nameList{
        print("\(name)")
    }
}
getName(nameInt)
getName(nameString)

1.2 类型约束

使用泛型时可以对定义的泛型遵守Hashable协议,Swift中。String、Int、Double等都是遵循Hashable协议的。

Hashable协议是继承Equatable协议的,在遵循了Equatable协议之后,就可以支持“==”或“!=”比较。

1.3 泛型和Any的区别

泛型和Any类型虽然看起来相似,但其实是有区别的。他们的区别在于Any类型会避开类型检查,所以尽量少用或不用。

使用泛型能够保证参数和返回值的类型相同

func add(_ input:T) -> T{
   //...
   return input
}

你可能感兴趣的:(理顺iOS(一)泛型)