Vai al contenuto

SCOPE

Cosa imparerò:

  • Global Scope
  • Local Scope
  • File Scope
  • Class/Struct Scope
  • Function Scope

Lo scope in Swift si riferisce alla visibilità e alla disponibilità di variabili, costanti, funzioni e altri elementi all'interno del codice. Lo scope determina dove un determinato elemento può essere utilizzato e se è visibile da altre parti del codice. In Swift, ci sono diversi livelli di scope:

Global Scope: Variabili, costanti e funzioni definite al livello più esterno del file sorgente. Possono essere accessibili da qualsiasi parte del file sorgente e da altri file sorgente nell'ambito dello stesso modulo.

let globalConstant = 10
func globalFunction() {
    print("Global Function")
}

Local Scope: Variabili, costanti e funzioni definite all'interno di una parentesi graffa {} come quelle di un blocco if, for, while, o all'interno di una funzione. Possono essere accessibili solo all'interno del blocco in cui sono definite.

func localScopeExample() {
    let localConstant = 20
    if true {
        let anotherLocalConstant = 30
        print(localConstant) // Accessibile
        print(anotherLocalConstant) // Accessibile
    }
    // print(anotherLocalConstant) // Errore, non accessibile al di fuori del blocco if
}
localScopeExample()

Output

20
30

File Scope:
Un'estensione del Global Scope, dove alcuni elementi dichiarati a livello di file sono visibili in tutto il file. Usato principalmente per definire strutture, classi, enumerazioni e protocolli.

struct FileScopeStruct {
    static let fileScopeConstant = 50
}
print(FileScopeStruct.fileScopeConstant) // Accessibile da qualsiasi punto nel file sorgente

Output

50

Class/Struct Scope: Variabili, costanti e funzioni definite all'interno di una classe o di una struttura. Possono essere accessibili solo dalle istanze di quella classe o struttura.

struct MyStruct {
    let structConstant = 100
    func structFunction() {
        print(structConstant) // Accessibile
    }
}
let myInstance = MyStruct()
print(myInstance.structConstant) // Accessibile
myInstance.structFunction() // Accessibile

Output

100
100

Function Scope: Variabili, costanti e funzioni definite all'interno di un'altra funzione. Possono essere accessibili solo all'interno della funzione in cui sono definite.

func outerFunction() {
    let outerConstant = 200
    func innerFunction() {
        print(outerConstant) // Accessibile
    }
    innerFunction() // Accessibile
}
outerFunction()

Output

200

Lo scope aiuta a mantenere il codice organizzato e a prevenire l'accesso non autorizzato a variabili e funzioni.