有时候swift需要使用的功能没有提供,就需要自己使用extension扩展。
扩展分为两种:对类型的扩展和对协议的扩展。
- 对类型的扩展
比如说我们需要判断一个整数是不是偶数,swift并没有提供该功能的方法或者属性:
extension Int{
var isEven: Bool{
return self % 2 == 0
}
}
我们就是给Int类型扩展了一个计算属性,使用:
8.isEven
可以看到playground右侧返回的是true。这样我们就可以对所有的Int类型使用该属性。
- 对协议的扩展
经常需要对数组和set使用一些功能,但是没有,就需要对其扩展。
由于数组和set都遵循Collection协议,我们就可以对Collection协议进行扩展,这样数组和set也可以使用扩展的功能或者属性。
比如说我们需要扩展一个功能,它能打印出所有的元素名称:
extension Collection{
func printAll(){
for name in self{
print(name)
}
}
}
数组和set如下:
let arr = ["1","2","2","3","4","5"]
let se = Set(["小","中","大"])
使用:
arr.printAll()
se.printAll()
就可以看到playground下面打印出所有的元素。