Swift中的擴展與Objective-C中的類別功能類似,擴展能夠爲一個已有的類、結構體、枚舉或者協議添加新的屬性或方法,與Objective-C的類別不一樣的是,Swift中的擴展沒有名稱。javascript
Swift中的擴展支持以下功能:java
1.添加計算屬性spa
2.定義實例方法和類型方法code
3.定義新的構造方法ip
4.定義下標方法it
5.定義嵌套類型io
6.使一個已有的類遵照協議class
7.對協議進行擴展添加新的方法擴展
使用extension來聲明擴展,示例代碼以下:方法
//建立一個類 有兩個屬性 class MyClass { var name:String var age:Int init(){ name = "HS" age = 24 } } //爲MyClass類擴展一個計算屬性 extension MyClass { var nameAndAge:String{ return "\(name)"+"\(age)" } } var obj = MyClass() obj.nameAndAge
須要注意的是,擴展不能爲類添加指定構造方法,只能夠爲其添加便利構造方法,示例代碼以下:
//建立一個類 有兩個屬性 class MyClass { var name:String var age:Int init(){ name = "HS" age = 24 } } extension MyClass{ convenience init(name:String,age:Int){ self.init() self.name=name self.age=age } } var obj2 = MyClass(name: "ZYH", age: 24)
擴展能夠爲一個類型添加實例方法與類型方法,示例以下:
//建立一個類 有兩個屬性 class MyClass { var name:String var age:Int init(){ name = "HS" age = 24 } } extension MyClass{ func logName() -> String { print(name) return name } class func logClassName(){ print("MyClass") } } var obj3 = MyClass() obj3.logName() MyClass.logClassName()
對於值類型的擴展,能夠使用可變方法來修改實例自己,示例以下:
extension Int{ //修改自己須要使用nutating mutating func change() { self = self*self } } var count = 3 count.change() //打印9 print(count)
專一技術,熱愛生活,交流技術,也作朋友。
——琿少 QQ羣:203317592