Swift Language Esempio di base usando una Struct


Esempio

3.0

In Swift 3 ci sono più livelli di accesso. Questo esempio li utilizza tutti tranne che per 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)"
    }
}

Supponi che myCar stato inizializzato in questo modo:

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

Car.make (pubblico)

print(myCar.make)

Questa stampa funzionerà ovunque, compresi gli obiettivi che importano l' Car .

Car.model (interno)

print(myCar.model)

Questo verrà compilato se il codice si trova nello stesso obiettivo di Car .

Car.otherName (file privato)

print(myCar.otherName)

Funzionerà solo se il codice è nello stesso file di Car .

Car.fullName (privato)

print(myCar.fullName)

Questo non funzionerà con Swift 3. È possibile accedere private proprietà private solo all'interno della stessa 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)"
    }
}

Se l'entità ha più livelli di accesso associati, Swift cerca il livello di accesso più basso. Se esiste una variabile privata in una classe pubblica, la variabile verrà comunque considerata privata.