In Swift beïnvloeden toegangsniveaus (private, fileprivate, internal, public, open) niet alleen klassen, structuren en hun eigenschappen, maar ook geneste (nested) types. Een genest type erft standaard het toegangsniveau van zijn omringende type, tenzij er een andere expliciete beperking is opgegeven.
Belangrijke nuances:
internal is verklaard, kan het geneste type niet opener zijn dan het externe, maar kan het wel „geslotener” zijn (bijvoorbeeld, extern — public, genest — private).internal, niet zichtbaar vanuit andere modules.Voorbeeld:
public class A { public struct B { fileprivate func foo() {} } }
In dit voorbeeld zijn A en B openbaar, maar de methode foo() is bestand-prive.
Vraag: "Kan een genest type een hoger toegangsniveau hebben dan het omringende type?"
Antwoord: Nee, het toegangsniveau van een genest type kan niet hoger zijn dan het toegangsniveau van het omringende type. Als je probeert een genest type met een hoger toegangsniveau te declareren, geeft de compiler een foutmelding.