Swift專題講解二十——擴展

Swift專題講解二十——擴展

1、簡介

        Swift中的擴展與Objective-C中的類別功能類似,擴展能夠爲一個已有的類、結構體、枚舉或者協議添加新的屬性或方法,與Objective-C的類別不一樣的是,Swift中的擴展沒有名稱。javascript

        Swift中的擴展支持以下功能:java

1.添加計算屬性spa

2.定義實例方法和類型方法code

3.定義新的構造方法ip

4.定義下標方法it

5.定義嵌套類型io

6.使一個已有的類遵照協議class

7.對協議進行擴展添加新的方法擴展

2、使用擴展添加計算屬性

        使用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

3、使用擴展添加構造方法

        須要注意的是,擴展不能爲類添加指定構造方法,只能夠爲其添加便利構造方法,示例代碼以下:

//建立一個類 有兩個屬性
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)

4、使用擴展添加實例方法與類型方法

        擴展能夠爲一個類型添加實例方法與類型方法,示例以下:

//建立一個類 有兩個屬性
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

相關文章
相關標籤/搜索