使用 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 會查詢最低階別的訪問許可權。如果公共類中存在私有變數,則該變數仍將被視為私有。