멤버의 확장(서브스크립트)
- 확장을 사용하여 기존 타입에 새로운 서브스크립트를 추가할 수 있다
- 기존 타입의 동작을 변경하지 않고도 추가 기능을 제공할 수 있다
서브스크립트 확장의 예시
extension Int {
subscript(index: Int) -> Int {
var divisor = 1
for _ in 0..<index {
divisor *= 10
}
return (self / divisor) % 10
}
}
let number = 987654321
print(number[0])
print(number[1])
print(number[2])
print(number[3])
print(number[4])
print(number[5])
print(number[6])
print(number[7])
print(number[8])
print(number[9])
print(number[12])
extension Int: 기존 Int 타입을 확장하고 있다
subscript(index: Int) ➡️ Int: 인덱스를 입력받아 특정 자리수의 값을 반환하는 서브스크립트를 정의하였다
divisor: 주어진 인덱스에 맞게 10의 거듭제곱 값을 계산한다 (index가 0이면 1, 1이면 10, 2이면 100 등)
(self / divisor) % 10: 숫자를 자리수에 따라 나누고, 10으로 나누었을 때의 나머지를 계산하여 해당 자리수를 반환한다
- 범위를 넘는 경우
0을 반환한다