2016-02-22 90 views
1

我是Swift的新手,嘗試學習訪問控制的概念。我在「swift programming language 2.1」中看到了這段代碼。我瞭解代碼"public private(set) var numberOfEdits = 0"意味着對於變量numberOfEdits,它有一個公共getter和一個私人setter。可以將`public private(set)var numberOfEdits = 0`寫爲`public(get)private(set)var numberOfEdits = 0`?

我的問題是,public private(set) var numberOfEdits = 0可以寫爲public(get) private(set) var numberOfEdits = 0清楚地表明numberOfEdits有一個公共getter?

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

回答

2

不,getter始終具有訪問級別的非限定訪問控制標籤。你可以覆蓋設置者的等級爲,低於獲得者的等級爲private(set)internal(set)

+1

「每個接入級別修改器上方任選接受一個參數,它由(,私人(設置)用於實例)的‘設置’的關鍵字包含在括號中的」 摘自:蘋果公司「的夫特編程語言(Swift 2.1預發行)。「iBooks。 https://itun.es/us/k5SW7.l –

+1

節:語言參考,子部分:訪問控制級別 –

相關問題