💥 배열 안전하게 조회하기
🌟 배열을 안전하게 조회해야되는 이유?
- Array: Out of range 런타임 error가 발생이되면 프로그램이 바로 죽기 때문에 안전하게 조회를 해야된다.
- 따라서, 우리는 만약 out of range이면 nil을 내뱉는 서브 스크르비트 메소드를 만들어주면 된다.
extension Array {
public subscript (safe index: Int) -> Element? {
return indices ~= index ? self[index] : nil
}
}
let list = [1, 2, 3]
list[safe: 4]
list[safe: 2]
🤔 ‘~=’ 연산자는 뭘까?..
- 대상이 특정 범위에 속하는 지 범위를 체크하는 연산자
- switch 구문이 해당 연산자를 사용한다.(내부적으로 case의 범위를 체크할 때 사용한다.)
예를 통하여 활용을 알아보자.
- 아래의 코드는 만약 n이 0과 10사이일 경우 n에 곱하기 10을 하라는 코드이다.
var n = 5
if 0..<10 ~= n {
n *= 10
}
print(n)
- 따라서 아래의 코드에서
- indices ⇒ 콜렉션 타입의 프로퍼티로써 collection의 유효 범위를 갖고 있는 프로퍼티이다. [1,2,3,4,5]라면, indices는 0..<5이다.
- 만약 Index가 indices 범위 안에 없다면 nil을, 만약 있다면 self[index]를 return하라는 뜻이다.
return indices ~= index ? self[index] : nil
📚 참고자료
[Swift] 배열 안전하게 조회
~= 연산자 in Swift
잘 보고 갑니다 ~