你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 《從零開始學Swift》學習筆記(Day 51)——擴展構造函數

《從零開始學Swift》學習筆記(Day 51)——擴展構造函數

編輯:IOS開發綜合
擴展類型的時候,也可以添加新的構造函數。值類型與引用類型擴展有所區別。值類型包括了除類以外的其他類型,主要是枚舉類型和結構體類型。
值類型擴展構造函數
擴展結構體類型中定義構造函數的示例:
struct Rectangle {          
    
    var width : Double
    var height : Double
    
    init(width : Double, height : Double) {
        self.width   = width
        self.height  = height
    }
 
}
extension Rectangle {        //定義了Rectangle的擴展類型
    init(length : Double) {  
        self.init(width : length, height :length)
    }
}
 
var rect = Rectangle(width: 320.0, height : 480.0)  //調用兩個參數的構造函數,這個構造函數是原始類型提供,Rectangle類型已經是擴展類型
print("長方形:\(rect.width)x \(rect.height)")
 
var square =Rectangle(length: 500.0)    //調用一個參數的構造函數,這個構造函數是擴展類型提供的
print("正方形:\(square.width)x \(square.height)")


self.init是調用了原始類型的兩個參數的構造函數。

引用類型擴展構造函數
擴展類中定義構造函數的示例:
class Person {              
    var name : String
    var age : Int
    func description() -> String {
        return "\(name) 年齡是: \(age)"
    }
    init (name : String, age : Int) {
        self.name = name
        self.age  = age
    }
}
 
extension Person {           //定義Person類的擴展類型
    convenience init (name : String) {    //便利構造函數
        self.init(name : name, age : 8)   
    }
}
 
let p1 = Person(name :"Mary")   //調用兩個參數的構造函數,這個構造函數是原始類型提供,這時候的Person類型已經是擴展類型。
print("Person1 : \(p1.description())")
let p2 = Person(name :"Tony", age : 28)//調用一個參數的構造函數創建Person實例,這個構造函數是擴展類型提供的。
print("Person2 : \(p2.description())")


代碼self.init(name :name, age : 8)調用指定構造函數代理部分構造任務。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved