Swift2.0 泛型-减少重用代码的编写
为何使用泛型在编程语言中,往往有很多的数据类型,如果我们需要对每个类型都进行相同的操作,那么就需要为每种类型都编写一段相同的代码,比如我们想要比较两个值得大小.一般会写成这样 func maxInt(a:Int,b:Int) ->Int{
return a>b?a:b
}
这样写是没有问题的,但是参数只能接受Int类型的,如果再想比较float的值呢?那么就需要再写一个这样的方法,但是如果再有其他的类型的呢?这样就会造成很多重复的代码.而泛型就是为了解决这个问题存在的. 基本的使用为了解决上面的问题,我们可以做这样的事情,我们可以用一个任意的类型,让这个方法可以接受所有的类型,于是代码就变成了这样 func maxAny<T>(a:T,b:T) ->T{
return a>b?a:b
}
func maxAny<T>(a:T,b:T) -> T {
print(a)
return b
}
//调用方法,分别传String和Int的类型
self.maxAny("a",b: "asd")
self.maxAny(12,b: 13)
//输出结果
a
12
两种类型都输出正常,表示这个方法确实可以接受两种类型
func maxAny<T:Comparable>(a:T,b:T) ->T{
return a>b?a:b
}
print(self.maxAny(2,b: 3)) ;
print(self.maxAny(3.2,b: 4.2))
//分别调用方法传递Int类型和double类型的参数
//输出结果
3
4.2
这里就完成了,只要一个方法,就可以传递多种类型的参数,这个就是使用泛型的主要目的 常见的泛型使用swift中,Array是可以接受任何类型的.但是我们可以使用泛型,让Array只接受一种数据类型. var array:Array<Int> = Array()//声明一个数组
array.append(10)//将整数加入数组
array.append("str")//将String加入数组
在类中使用泛型模拟一个类似于Array的类 class Test<T> {
var items = [T]()
func append(item:T){
items.append(item)
}
} //接下来是使用
var a:Test<Int> = Test()
a.append(12)
a.append("asd") //这里第三行同样会报错,和Array类型是一样的
这样做的好处就是这个类本身可以接收任意的类型,也可以指定类接收的类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |