Swift - Scope

이한솔·2023년 9월 10일
0

Swift 문법 🍎

목록 보기
20/32

Scope

코드의 범위, 코드는 접근하거나 적용되는 범위가 존재한다.



전역범위(Global Scope) / 지역범위(Local Scope)

Scope는 크게 두 가지로 분류된다.
💡 이 두가지를 나누는 기준은?
{} 중괄호이다.

{} 이면 Global Scope (프로그램 실행이 끝나면 메모리에서 사라진다.)
{} 이면 Local Scope (실행범위가 끝나면 메모리에서 사라진다.)

let a = 100 // 글로벌 스코프 상수

if ture {
  let b = 200 // 로컬 스코프 상수
  
  if true {
    var d = 400 // 로컬 스코프 상수
  }
}

let c = 300 // 글로벌 스코프 상수


Scope 규칙

  1. 동일한 스코프에 접근 가능하다.
let a = 100

if true {
  let b = 200
  
  if true {
    var d = 400
  }
}

let c = 300

print(a) // 출력값: 100
print(c) // 출력값: 300
print(b) // Error
print(d) // Error
  1. 같은 스코프에선 이전에 선언된 변수와 상수에만 접근할 수 있다.
let a = 100

print(c) // Error
if true {
  let b = 200
  
  if true {
    var d = 400
  }
}

let c = 300

print(c) // 출력값: 300
  1. 로컬스코프에서 상위스코프나 글로벌스코프에 접근 가능하다.
    상위스코프는 하위스코프에 접근 불가능하다.
let a = 100
print(b) // Error

if true {
  let b = 200
    print(a) // 출력값: 100
 
 if true {
    var d = 400
    print(b) // 출력값: 200
  }
}

let c = 300
  1. 서로 다른 스코프에 동일한 이름이 존재하면 가장 가까운 스코프에 있는것 사용한다. (단순히 거리가 가까운 것이 아닌 계층과 선언시점이 가까운 것)
let a = 100

if true {
  let a = 200
    print(a) // 출력값: 200
  
  if true {
    var d = 400
 
 }
}

print(a) // 출력값: 100


선언범위(Declaration Scope)

중괄호 안에 있지만 선언만 할 수 있는 스코프

0개의 댓글