KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

Swift/Swift문법

swift문법 - Scope

2022. 9. 18. 19:37

Scope

  • 코드의 범위
  • 선언된 위치에 따라서 결정
  • scope에는 전역 범위(Global Scope)와 지역 범위(Local Scope)가 있다.
  • 전역 범위와 지역 범위를 나누는 기준은 { } - Brace를 기준으로 나눈다.
  • { } 밖에 있다면 전역 범위
  • { } 안에 있다면 지역 범위 
1. var sum = 0
2. for i in 0...10 {
3.     sum += i
4. }

위 코드에서 1번 위치가 전역 범위(Global Scope)이고 2~4번 위치가 지역 범위(Local Scope)이다.

 

Scope의 5가지 규칙

  1. 동일한 스코드에 있는 변수와 상수에 접근 가능하다.
  2. 동일한 스코프에서는 이전에 선언되어 있는 변수와 상수에 접근 가능하다.
  3. 로컬 스코프에서는 자신의 상위 스코프에 선언된 변수와 상수에 접근 가능하나 자신의 상위 스코프에 선언되지 않는 경우 접근 불가능하다.
  4. 상위 스코프에서는 하위 스코프에 접근할 수 없다.
  5. 서로 다른 스코프에 동일한 이름을 가진 변수와 상수가 존재한다면 가장 인접한 스코프에 있는 변수와 상수를 사용한다.

규칙 1

  • 동일한 스코프에 있는 변수와 상수에 접근 가능하다.
1. var sum = 0
2. for i in 0...10 {
3.      sum += i
4. }
5. var sum1 = 1 
6. print(sum) // 접근 가능
7. print(sum1) // 접근 가능

위 코드에서 sum과 sum1은 같은 전역 범위이므로 접근 가능하다.

 

규칙 2

  • 동일한 스코프에서는 이전에 선언되어있는 변수와 상수만 접근 가능하다.
1. var sum = 0
2. print(sum1) // 6번 라인에 선언되어있음 error!!
3. for i in 0...10 {
4.     sum += i
5. }
6. var sum1 = 1
7. print(sum) // 접근 가능

위 코드에서 7번 라인의 sum은 접근 가능하지만 2번 라인의 sum1은 접근하기 전에 선언되어 있지 않기 때문에 접근할 수 없다.

 

규칙 3

  • 로컬 스코프에서는 자신의 상위 스코프에 선언된 변수와 상수에 접근 가능하나 자신의 상위 스코프에 선언되지 않는 경우 접근 불가능하다.
1. var sum = 0
2. //var op = 3 // 주석처리되어 선언되어있는 상태가 아님
3. for i in 0...10 {
4.      sum += i
5.      print(sum1)
6.      print(op) // error!!
7. }
8. var sum1 = 1

위 코드에서 4 ~ 6번 라인 위치에서 sum, sum1은 접근 가능하지만 op는 주석처리(선언되어있지 않음)되어 있기 때문에 접근 불가능하다.

하지만 주석 처리되어있지 않고 정상적으로 선언되어 있다면 4 ~ 6번 라인 위치에서 접근 가능하다.

 

규칙 4

  • 상위 스코프에서는 하위 스코프에 접근할 수 없다.
1. var x = 0
2.
3. if x == 0 {
4. 	var y = 10 
5. }
6. print(y) // error!!

위 코드에서 하위 스코프인 3 ~ 5번 라인 위치에서 선언된 y는 6번 라인에서 접근할 수 없다. 

 

규칙 5

  • 서로 다른 스코프에 동일한 이름을 가진 변수와 상수가 존재한다면 가장 인접한 스코프에 있는 변수와 상수를 사용한다.
1. var x = 0
2. var y = 1
3. var z = 2
4. 
5. if x == 0 {     
6.     var y = 4     
7.     if z == 2 {
8.        print(y) // 4 출력
9.     }
10.}

위 코드에서 8번 라인의 출력값을 보면 4로 출력된다. 왜냐하면 바로 위의 상위 스코프에 있는 y의 값 4를 사용하기 때문이다.

'Swift > Swift문법' 카테고리의 다른 글

Swift문법 - Type Inference and Type Annotation  (0) 2022.10.09
Swift문법 - Data Types  (0) 2022.10.02
Swift문법 - Naming Convention  (0) 2022.09.11
Swift문법 - Variables and Constants  (0) 2022.09.11
Swift문법 - First Class Citizen  (0) 2022.09.05
    'Swift/Swift문법' 카테고리의 다른 글
    • Swift문법 - Type Inference and Type Annotation
    • Swift문법 - Data Types
    • Swift문법 - Naming Convention
    • Swift문법 - Variables and Constants
    KWiOS
    KWiOS

    티스토리툴바