728x90
240313
이미 듣고 정리한 내용인데도 새롭다,,,,
//전역 범위 Global Scope {} 이거 밖에
//지역 범위 Local Scope {} 이거 안에
//#1 == #2 동일한 스코프
let g1 = 123 //#2에서 g1 사용 못함
print(g2) //여기까지만 실행 하면 g2 을 인식 할 수 없다
//error: algorithm.playground:13:7: error: cannot find 'g2' in scope
//print(local1) //에러 상위 스코프는 하위 스코프에 접근 할 수 없다
func doSomething() {
// #3 == #5 동일한 스코프
//로컬 스코프에선 상위 스코프에 접근 할 수 있다
// print(g1)
// print(g2)
let g1 = 789
print(g1) // 789 출력. 서로다른 스코프에 동일한 이름이 존재한다면 가장 가까운 스코프에 있는 이름을 사용한다
let lacal1 = 123
// print(local2) //local2를 선언하기 전이라 에러남
if true {
// #4
print(lacal1) //문제 없이 접근가능 위에 선언되어 있기 때문
// print(local2) //접근할 수 없음.선언되기 전이기 때문. 글로벌 스코프가 아니면 이미 선언되어 있는것만 접근가능
let local3 = 123 //현재 스코프 안에서만 접근 가능하고 스코프가 끝나면 메모리 공간도 사라진다 그래서 상위 스코프에서 접근불가
}
//#5 == #3
let local2 = 123
// print(local3) //error 하위 스코프에 선언되어 있기 때문에 접근할 수 없음
}
//#2 == #1
//let g1 = 456 // 에러남
let g2 = 456
print(g2)
struct Scope {
//#6
//error 선안이 와야하는데 print 는 선언하는 코드가 아니라 에러남
//Declaration Scope
// print(g1)
// print(g2)
func doSomething() {
//#7
//g1 g2에 접근 가능
// print(g1) 프린트가 왜 안찍히나 했더니 한게 없어서 안찍히는거네
}
}
/*
1. 동일한 스코프에 접근할 수 있다
2. 글로벌 스코프에서는 선언 순서에 상관없이 접근할 수 있다
3. 글로버 스코프에서 만들어진 메모리는 실행이 종료 되면 사라진다 프로그램 실행이 끝나면
4. 스코프가 다르면 같은 이름으로 실행 할 수 있다
5. 글로벌 스코프 외엔 스코프의 끝을 정확히 할 것 !!!잘 닫아랑
*/
질문 !!
728x90
'iOS Swift > 문법' 카테고리의 다른 글
[Swift] Ternary Conditional Operator 조건 연산자 (0) | 2024.03.14 |
---|---|
[Swift] Strings and Characters (0) | 2024.03.14 |
Swift Naming convention (0) | 2024.03.13 |
Swift Variables and Constants (0) | 2024.03.13 |
[Swift] Property observer 프로퍼티 관찰자(옵저버) (0) | 2024.03.11 |
댓글