2016-05-16 89 views
2

因此Im通過蘋果的文檔會在這裏 - Apple Docs「public private(set)」訪問修飾符如何工作?

然後,我遇到了這個..

public struct TrackedString { 
    public private(set) var numberOfEdits = 0 
    public var value: String = "" { 
     didSet { 
      numberOfEdits += 1 
     } 
    } 
    public init() {} 
} 

如何添加public private(set)工作完全?如果你能展示一些更簡單的例子/解釋,那將是驚人的!

回答

5

這只是意味着numberOfEdits的獲取者是公開的,但是setter是私人的。沒有什麼更多。

在這種情況下,您可以公開閱讀numberOfEdits,但您只能通過更改value來設置它。如果完全是public,那麼任何人都可以設置它,但是如果它只能設置,那麼value中的didSet無法修改它。 private(set)是這兩者之間的妥協。

+0

解釋正確,但提到的變量是錯誤的。 numberOfEdits屬性是隻能在類中設置的屬性(即只讀位置)。 value屬性仍然是可讀/寫的。 – ghostatron

+0

謝謝@conarch。固定。 –

+3

@conarch「numberOfEdits屬性是隻能在類中設置的屬性」不是類。文件。隱私類的範圍界定尚未在Swift中實施。 – matt