1.1 泛型介绍
泛型的概念最早出自C++,Swift的泛型与其设计思路相同,与Java不同。
优缺点
C++与Swift:是编译时多态技术,编译器确定类型,运行时不需要计算。
缺点:生成的机器码二进制包大一些,虽执行快但可能有更多I/O。
Java:是运行时多态,运行时才确定的。
缺点:运行时才能看到。
使用泛型让代码更简洁和安全。减少强制转换以及其带来的出错风险。
let nameInt = [111,222,333]
let nameString = ["Jack","John","Joker"]
func getName<T>(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<T>(_ input:T) -> T{
//...
return input
}
网友评论