-
[Swift] ScopeSwift 2022. 1. 4. 21:48
Swift์์๋ {} (brace)๋ฅผ ํตํด ์ฝ๋์ ๋ฒ์ (Scope)๋ฅผ ์ง์ ํ๋ค.
Scope๋ Global Scope, Local Scope, Declaration Scope์ผ๋ก ๋๋ ์ ์๋ค.
Global Scope (์ ์ญ ๋ฒ์)
- Global Scope๋ ์ด๋ ํ brace์๋ ์ํ์ง ์๋ ๊ฒ์ผ๋ก, ํ๋๋ง ์กด์ฌ ๊ฐ๋ฅํ๋ค.
Local Scope (์ง์ญ ๋ฒ์)
- Local Scope๋ brace ๋ด์ ์ํ๋ ๊ฒ์ผ๋ก, ํ์ํ ๋งํผ ์ฌ๋ฌ ๊ฐ ์กด์ฌํ ์ ์๊ณ ์ค์ฒฉ๋ ์๋ ์๋ค.
- Local Scope์์ ์์ Scope ๋๋ Global Scope์ ์ ์ธ๋ ๋ณ์์ ์์์ ์ ๊ทผํ ์ ์๋ค.
- Identifier๊ฐ ์๋ก ๋ค๋ฅธ Scope์ ์๋ค๋ฉด, ๊ฐ์ Identifier๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์์ง ์ ์ธ๋์ง ์์ ๋ณ์ ๋๋ ์์์ ์ ๊ทผํ ์ ์๋ค.
Declaration Scope (์ ์ธ ๋ฒ์)
- Declaration Scope์์๋ ๋ง ๊ทธ๋๋ก ์ ์ธ๋ง ๊ฐ๋ฅํ๊ณ , ๊ตฌํ์ ํ ์ ์๋ค. ์ฆ, ํํ์์ด๋ ๋ฌธ์ฅ์ ์์ฑํ ์ ์๋ค.
- Global Scope, Local Scope์์๋ print๋ฌธ์ ์ ๋ ฅํ๋ฉด ์๋์์ฑ์ด ๋จ๋ ๊ฒ์ ํ์ธํ ์ ์์ง๋ง, Declaration Scope์์๋ ์๋์์ฑ์ด ๋จ์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ง๋ถ์ฌ ๋งํ์๋ฉด,
- ์์ Scope์์๋ ํ์ Scope์ ์ ์ธ๋ ๋ณ์์ ์์์ ์ ๊ทผํ ์ ์์ง๋ง, ๊ทธ ๋ฐ๋๋ ๊ฐ๋ฅํ๋ค. ์ฆ, ํ์ Scope์์๋ ์์ Scope์ ์ ์ธ๋ ๋ณ์์ ์์์ ์ ๊ทผํ ์ ์๋ค.
- ์๋ก ๋ค๋ฅธ Scope์ ๊ฐ์ ์ด๋ฆ์ ๋ณ์๋ ์์๊ฐ ์กด์ฌํ๋ค๋ฉด, ์์ ๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด Scope์ ๋ณ์๋ ์์๋ฅผ ์ฌ์ฉํ๋ค.
์๋ ์์ ๋ฅผ ํตํด Scope์ ๋ํด ์์ธํ ์์๋ณด์.
import UIKit // #1 : Global class ViewController: UIViewController { // #2 : Declaration. ์ ์ธ๋ง ๊ฐ๋ฅ. let a: Int = 1 override func viewDidLoad() { super.viewDidLoad() // #3 : Local. #1, #2์ ์ ๊ทผ ๊ฐ๋ฅ. ์ ์ธ, ๊ตฌํ ๋ชจ๋ ๊ฐ๋ฅ let a = 5 print(a) // 5 if a > 3 { // #4 : Local. #1, #2, #3์ ์ ๊ทผ ๊ฐ๋ฅ print(a) } } // #5 : Declaration } // #6 : Global. Local์ ์ ๊ทผ ๋ถ๊ฐGlobal Scope : #1, #6 (#1๊ณผ #6๋ ๊ฐ๋ค.)
Local Scope : #3, #4
Declaration Scope : #2, #5
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Range Operator (๋ฒ์ ์ฐ์ฐ์) (0) 2022.01.09 [Swift] ๋จ๋ฝ ํ๊ฐ (Short-circuit Evaluation) (0) 2022.01.07 [Swift] ์ฐ์ฐ์ (Operator) (0) 2022.01.06 [Swift] Type Inference, Type Annotation (0) 2022.01.05 [Swift] ๊ธฐ๋ณธ ์ฉ์ด ์ ๋ฆฌ (0) 2022.01.03