ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] - Subscripts (μ„œλΈŒμŠ€ν¬λ¦½νŠΈ)
    iOS/🟠 Swift 2021. 2. 19. 17:21

    클래슀, ꡬ쑰체, μ—΄κ±°ν˜•μ€ μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     

    μ„œλΈŒμŠ€ν¬λ¦½νŠΈλŠ” collection, list, sequence 의 멀버에 λΉ λ₯΄κ²Œ μ ‘κ·Όν•  수 μžˆλŠ” μˆ˜λ‹¨μž…λ‹ˆλ‹€.

     

    μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λ©΄ 인덱슀λ₯Ό μ΄μš©ν•΄μ„œ 값에 μ ‘κ·Όν•΄μ„œ 값을 λ°”κΎΈκ±°λ‚˜ 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.

    setter λ‚˜ κ°’ 검색 λ©”μ†Œλ“œμ˜ κ΅¬ν˜„μ΄ ν•„μš” μ—†κ²Œ λ©λ‹ˆλ‹€.

     

    예λ₯Ό λ“€μ–΄, 배열은 someArray[index] 와 같이 μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•΄ 값에 μ ‘κ·Όν•˜κ³  λ°”κΏ€ 수 μžˆμŠ΅λ‹ˆλ‹€.

     

    ν•˜λ‚˜μ˜ νƒ€μž…μ— μ—¬λŸ¬κ°œμ˜ μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    즉, νŒŒλΌλ―Έν„°μ˜ νƒ€μž…μœΌλ‘œ κ΅¬λΆ„λ˜λŠ” μ˜€λ²„λ‘œλ”©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

     

    μ„œλΈŒμŠ€ν¬λ¦½νŠΈλŠ” 1차원에 μ œν•œλ˜μ§€ μ•Šκ³ , μ—¬λŸ¬ 개의 νŒŒλΌλ―Έν„°λ₯Ό λ°›μ•„μ„œ μ»€μŠ€ν…€ νƒ€μž…μ— 맞게 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


     

    Subscript Syntax

    μ„œλΈŒμŠ€ν¬λ¦½νŠΈλŠ” μΈμŠ€ν„΄μŠ€λͺ… 뒀에 λŒ€κ΄„ν˜Έ ( ' [  ] ' ) λ₯Ό 적고, κ·Έ μ•ˆμ— ν•œ 개 μ΄μƒμ˜ 값을 λ„£μ–΄μ„œ μΈμŠ€ν„΄μŠ€μ— μš”μ²­μ„ μ „λ‹¬ν•©λ‹ˆλ‹€.

    λŒ€κ΄„ν˜Έ: square brackets

     

    문법은 μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ μ™€ 계산 속성 μ˜ 문법과 μœ μ‚¬ν•©λ‹ˆλ‹€.

     

    μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ™€λŠ” 달리, μ„œλΈŒμŠ€ν¬λ¦½νŠΈλŠ” 1. 읽고 μ“°κΈ° κ°€λŠ₯ ν˜Ήμ€ 2. 읽기 κ°€λŠ₯ μ˜΅μ…˜λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.

     

    이 뢀뢄은 계산속성이 getter 와 setterλ₯Ό μ„€μ •ν•  수 μžˆλŠ” μ˜΅μ…˜κ³Ό κ°™μŠ΅λ‹ˆλ‹€.

     

    블둝 λ‚΄λΆ€λŠ” 계산 속성 문법 κ³Ό μ™„μ „νžˆ λ™μΌν•©λ‹ˆλ‹€.

     

    subscript(index: Int) -> Int {
        get {
            // Return an appropriate subscript value here.
        }
        set(newValue) {
            // Perform a suitable setting action here.
        }
    }

     

    Subscript Usage

    예λ₯Ό λ“€μ–΄, Swift 의 λ”•μ…”λ„ˆλ¦¬ νƒ€μž…μ€ ' key 'λ₯Ό 전달 λ°›μœΌλ©΄ μ˜΅μ…”λ„ νƒ€μž…μ˜ ' value ' λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

    λ”•μ…”λ„ˆλ¦¬ μΈμŠ€ν„΄μŠ€λŠ” 0개 μ΄μƒμ˜ 'key-value' μŒμ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.

     

    μ „λ‹¬ν•œ key 에 λ”•μ…”λ„ˆλ¦¬ μΈμŠ€ν„΄μŠ€μ— μ‘΄μž¬ν•˜μ§€ μ•Šμ„ λ•Œ, ' nil ' 을 λ°˜ν™˜ν•˜κΈ° μœ„ν•¨μž…λ‹ˆλ‹€.

    var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
    numberOfLegs["bird"] = 2

     

    Type Subscripts

    νƒ€μž…μ—λ„ μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ •μ˜ν•  μˆ˜μžˆμŠ΅λ‹ˆλ‹€.

     

    이것을 'Type Subscripts' 라고 λΆ€λ¦…λ‹ˆλ‹€.

     

    μ•žμ— 'static' ν‚€μ›Œλ“œλ₯Ό λΆ™νžˆλ©΄ λ©λ‹ˆλ‹€.

     

    클래슀의 경우 상속 ν›„ μž¬μ •μ˜ ( override ) λ₯Ό ν—ˆμš©ν•˜λ €λ©΄ 'class' ν‚€μ›Œλ“œλ₯Ό λΆ™νž™λ‹ˆλ‹€.

    enum Planet: Int {
        case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
        static subscript(n: Int) -> Planet {
            return Planet(rawValue: n)!
        }
    }
    let mars = Planet[4]
    print(mars)

     

     

     

     

    끝!


    πŸ€–πŸŸ’[우짱의 iOS λΈ”λ‘œκ·Έ]πŸ”΅πŸ’»

    iOSλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 배운 λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

     

    λŒ“κΈ€

μ–΄μ œλ³΄λ‹€ λ°œμ „ν•œ λ‚˜