使用 Struct 的基本示例

Version >= 3.0

在 Swift 3 中有多個訪問級別。此示例使用除 open 之外的所有內容:

public struct Car {
    
    public let make: String
    let model: String //Optional keyword: will automatically be "internal"
    private let fullName: String
    fileprivate var otherName: String
    
    public init(_ make: String, model: String) {
        self.make = make
        self.model = model
        self.fullName = "\(make)\(model)"
        self.otherName = "\(model) - \(make)"
    }
}

假設 myCar 初始化如下:

let myCar = Car("Apple", model: "iCar")

Car.make(公共)

print(myCar.make)

此列印將在任何地方使用,包括匯入 Car 的目標。

Car.model(內部)

print(myCar.model)

如果程式碼與 Car 在同一目標中,則會編譯。

Car.otherName(fileprivate)

print(myCar.otherName)

這僅在程式碼與 Car 位於同一檔案中時才有效。

Car.fullName(私人)

print(myCar.fullName)

這在 Swift 3 中不起作用 .private 屬性只能在相同的 struct / class 中訪問。

public struct Car {

    public let make: String       //public
    let model: String             //internal
    private let fullName: String! //private 

    public init(_ make: String, model model: String) {
        self.make = make
        self.model = model
        self.fullName = "\(make)\(model)"
    }
}

如果實體具有多個關聯的訪問級別,則 Swift 會查詢最低階別的訪問許可權。如果公共類中存在私有變數,則該變數仍將被視為私有。