作用域指的是程序中变量、常量等名称的可访问范围。Swift中有一些常见的作用域需要了解。
全局作用域
全局作用域指整个代码文件或项目中都可以访问的作用域。通常我们会使用全局常量来定义项目全局可用的不变值:
swift www.itzhimei.com代码
let appName = "MyApp" // 全局作用域
func showAppName() {
print(appName) // 函数中可以访问
}
一般来说函数内部最好不要修改全局变量,可能造成难以发现的副作用。
函数作用域
变量和常量在函数或方法内部声明时,属于函数作用域,只在函数内可见:
func multiply(x: Int, y: Int) {
let result = x * y // 函数作用域
print(result)
}
result的生命周期仅在函数调用时存在。
嵌套作用域
作用域也可以嵌套,内部作用域可以访问外部作用域的变量:
func outer() {
let outer = "outer"
func inner() {
let inner = "inner"
print(outer) // 可以访问
}
}
但是外部作用域无法访问内部作用域的内容。
块作用域
使用大括号可以在代码块内创建作用域,限定变量作用范围:
for i in 1...3 {
let j = i * 2 // 专属于该代码块
print(j)
}
print(j) // 错误,超出作用域
理解Swift的作用域可以避免诸如变量命名冲突等问题,写出更清晰可靠的代码。