2015-03-13 84 views
3

假設我有一個班級,MyClass,它可以處於有效狀態或無效狀態。所以我用一個名爲isValid的布爾來跟蹤這個。我希望此值初始化爲false,直到調用該類的initialize函數。 initialize(和相應的reset函數)將直接能夠更改isValid bool的值。這是我所成立至今:在Swift中,有沒有更好的方法來初始化一個「get」變量?

class MyClass { 

    private var _isValid: Bool = false 
    var isValid: Bool { 
    get { return _isValid } 
    } 

// any required init functions 

    func initialize() { 
    // init stuff 
    _isValid = true 
    } 

    func reset() { 
    // reset stuff 
    _isValid = false 
    } 

} 

因此,這是做的最好的辦法,或者是有什麼辦法可以刪除第二個私人var和莫名其妙僅允許類函數來修改讀只有面向公衆的變量?

回答

9

只是讓你的二傳私人。見Access Control

class MyClass { 

    private(set) var isValid = false 

    func initialize() { 
     // init stuff 
     self.isValid = true 
    } 

    func reset() { 
     // reset stuff 
     self.isValid = false 
    }   
} 
+1

是的!我不知道那個關鍵字,但這正是我正在尋找的,我不必有一個重複的私有變量了。謝謝。 – 2015-03-13 18:16:01

相關問題