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.