ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] Scope
    Swift 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

    ๋Œ“๊ธ€

Designed by Tistory.