Zoeken…


Syntaxis

  • privéklasse project
  • let car = Car ("Ford", model: "Escape") // standaard intern
  • publiek genre
  • private func calculMarketCap ()
  • interne func-instellingen negeren View ()
  • private (set) var area = 0

Opmerkingen

  1. Basic Opmerking:

Hieronder staan de drie toegangsniveaus van hoogste toegang (minst beperkend) tot laagste toegang (meest beperkend)

Openbare toegang geeft toegang tot klassen, structuren, variabelen, enz. Vanuit elk bestand binnen het model, maar nog belangrijker buiten de module als het externe bestand de module met de openbare toegangscode importeert. Het is populair om openbare toegang te gebruiken wanneer u een framework maakt.

Interne toegang staat bestanden alleen toe met de module van de entiteiten om de entiteiten te gebruiken. Alle entiteiten hebben standaard een intern toegangsniveau (met enkele uitzonderingen).

Privétoegang voorkomt dat de entiteit buiten dat bestand wordt gebruikt.

  1. Subklasse Opmerking:

Een subklasse kan geen hogere toegang hebben dan zijn superklasse.

  1. Getter & Setter Opmerking:

Als de setter van de eigenschap privé is, is de getter intern (wat de standaardinstelling is). U kunt ook een toegangsniveau toewijzen voor zowel de getter als de setter. Deze principes zijn ook van toepassing op subscripts

  1. Algemene opmerking:

Andere typen entiteiten zijn: initialisatie, protocollen, extensies, generieken en type-aliassen

Basisvoorbeeld met een Struct

3.0

In Swift 3 zijn er meerdere toegangsniveaus. Dit voorbeeld gebruikt ze allemaal behalve 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)"
    }
}

Stel dat myCar als myCar is geïnitialiseerd:

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

Car.make (openbaar)

print(myCar.make)

Deze afdruk werkt overal, inclusief doelen die Car importeren.

Car.model (intern)

print(myCar.model)

Dit wordt gecompileerd als de code hetzelfde doel heeft als Car .

Car.otherName (fileprivate)

print(myCar.otherName)

Dit werkt alleen als de code in hetzelfde bestand staat als Car .

Car.fullName (privé)

print(myCar.fullName)

Dit werkt niet in Swift 3. private eigendommen zijn alleen toegankelijk binnen dezelfde 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)"
    }
}

Als de entiteit meerdere bijbehorende toegangsniveaus heeft, zoekt Swift het laagste toegangsniveau. Als er een privévariabele in een openbare klasse bestaat, wordt de variabele nog steeds als privé beschouwd.

Voorbeeld van subklasse

public class SuperClass {
    private func secretMethod() {}
}
 
internal class SubClass: SuperClass {
    override internal func secretMethod() {
        super.secretMethod()
    }
}

Getters en Setters-voorbeeld

struct Square {
    private(set) var area = 0

    var side: Int = 0 {
        didSet {
            area = side*side
        }
    }
}

public struct Square {
    public private(set) var area = 0
    public var side: Int = 0 {
        didSet {
            area = side*side
        }
    }
    public init() {}
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow