iOS/🟠 Swift

[Swift] - Subscripts (μ„œλΈŒμŠ€ν¬λ¦½νŠΈ)

woozzang 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λ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 배운 λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.