[swift 2.0] set , get , didset

類別的成員就是要用來設定和取值
所以用set來設定
用get來取值
寫個Book類別來示範
用set 來設定書本標題 
用get來取得書本標題
用init來初始化成員值,也就是C++中的建構子
class Book{
    var name:String
    var title: String{
        set {
            self.name = newValue
        }
        get {
            return self.name
        }
    }
    init(name:String){
        self.name = name
    }
}

var b = Book(name:"Love Story!")
b.title = "is everybody needed!"
print(b.title)

解說:
var b = Book(name:"Love Story!") 呼叫init
b.title = "is everybody needed!"  呼叫set
b.title 呼要get

寫程式的精神:大膽假設,小心驗證
為了在設定成員時,要設定檢查機制,避免成員存入不該存的值
所以用didset來當安全守門員

對name這個成員加上didSet來檢查,


class Book{
    var name:String {
        didSet {
            print("我是安全守門員,我會好好的檢查變數值是否安全後,才設定,變數直是:"+name)
        }
    }
    var title: String{
        set {
            self.name += newValue
        }
        get {
            return self.name
        }
    }
    init(name:String){
        self.name = name
    }
}

var b = Book(name:"Love stories ")
b.title += "is everybody needed!"
print(b.title)

執行順序:
步驟1. b.title += "is everybody needed!"
步驟2. title 的 set
步驟3.  name的 didSet

留言