前言:
Swift大多数概念和OC一样,也有些概念在OC中找不到对应的,比如说泛型。Swift中将那种操作写一次就可以作用多个类型的语法叫做Generics(泛型)什么是泛型,泛型有什么作用以及它的优缺点。
泛型是用来使代码能安全工作。在Swift中,泛型可以在函数数据类型和普通数据类型中使用,例如类、结构体或枚举。泛型解决了代码复用的问题。有一种常见的情况,你有一个方法,需要一个类型的参数,你为了适应另一种类型的参数还得重新再写一遍这个方法。
比如,在下面的代码中,如果要求使用一个方法来实现,在OC和Swift中就有明显的不同:
func demo1(x: Int, _ y: Int) -> Bool {
return x == y
}
func demo2(x: String, _ y: String) -> Bool {
return x == y
}
demo1("ray", "ray") // true
demo2(1, 1) // true
OC版的代码如下:
func demo1(x: NSObject, _ y: NSObject) -> Bool {
return x == y
}
demo("ray", "ray") // true
demo(1, 1) // true
这段代码能达到了目的,但是编译的时候并不安全。它允许一个字符串和一个整型数据进行比较,虽然这样不会造成程序崩溃,但是允许一个字符串和一个整型数据进行比较可能不会得到想要的结果。所以这里需要采用泛型,就可以将上面两个方法合并为一个,并同时还保证了数据类型安全。
实现代码如下:
func demo<T: Equatable>(x: T, _ y: T) -> Bool {
return x == y
}
demo("ray", "ray")
demo(1, 1)
网友评论