Swift作用域详解

作用域指的是程序中变量、常量等名称的可访问范围。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的作用域可以避免诸如变量命名冲突等问题,写出更清晰可靠的代码。