[swift] 변수와 상수의 스코프 범위
스위프트에서 변수와 상수는 프로그램의 다른 부분에서 액세스할 수 있는 스코프 범위를 가집니다. 스코프는 변수나 상수가 유효한 범위를 나타내며, 해당 범위 내에서만 변수나 상수에 액세스할 수 있습니다.
전역 스코프 (Global Scope)
전역 스코프는 프로그램의 어느 곳에서나 액세스할 수 있는 가장 넓은 스코프입니다. 전역적으로 정의된 변수나 상수는 어떠한 함수나 블록의 스코프에서도 사용할 수 있습니다. 전역 스코프에서 정의된 변수나 상수는 해당 프로그램이 실행되는 동안 유지됩니다.
let globalConstant = 10
func printGlobalConstant() {
print(globalConstant) // "10" 출력
}
printGlobalConstant()
함수 스코프 (Function Scope)
함수 내부에서 정의된 변수나 상수는 해당 함수 블록 내에서만 액세스할 수 있습니다. 함수 외부에서는 변수나 상수에 접근할 수 없습니다.
func printLocalVariable() {
let localVariable = 20
print(localVariable) // "20" 출력
}
printLocalVariable()
print(localVariable) // Error: Cannot find 'localVariable' in scope
블록 스코프 (Block Scope)
특정 블록 내에서 정의된 변수나 상수는 그 블록 내에서만 액세스할 수 있습니다. 블록은 중괄호 {}
로 둘러싸이는 코드 영역을 말합니다. 예를 들어, 조건문이나 반복문의 블록은 해당 조건문이나 반복문 내에서만 유효한 스코프를 가집니다.
if true {
let blockVariable = 30
print(blockVariable) // "30" 출력
}
print(blockVariable) // Error: Cannot find 'blockVariable' in scope
중첩 스코프 (Nested Scope)
스위프트에서는 함수나 블록 안에 또 다른 함수나 블록이 중첩될 수 있습니다. 내부 함수나 블록에서는 외부 함수나 블록에서 정의된 변수나 상수에 액세스할 수 있습니다. 그러나 외부 함수나 블록에서는 내부 함수나 블록에서 정의된 변수나 상수에 액세스할 수 없습니다.
func outerFunction() {
let outerVariable = 40
func innerFunction() {
let innerVariable = 50
print(innerVariable) // "50" 출력
print(outerVariable) // "40" 출력
}
innerFunction()
print(innerVariable) // Error: Cannot find 'innerVariable' in scope
}
outerFunction()
요약
스위프트에서 변수와 상수의 스코프는 전역, 함수, 블록, 중첩 등 다양한 범위를 가지고 있습니다. 잘 이해하고 적절하게 사용하여 변수와 상수를 관리하면 더욱 효율적인 코드를 작성할 수 있습니다.
참고 자료: