Swift使用结构的基本示例

示例

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(文件私有)

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将寻找最低的访问级别。如果私有变量存在于公共类中,则该变量仍将视为私有变量。