[Swift] - 안전하게 배열 조회하기

longlivedrgn·2023년 1월 13일
0

swift문법

목록 보기
32/36
post-thumbnail

💥 배열 안전하게 조회하기

🌟 배열을 안전하게 조회해야되는 이유?

  • Array: Out of range 런타임 error가 발생이되면 프로그램이 바로 죽기 때문에 안전하게 조회를 해야된다.
  • 따라서, 우리는 만약 out of range이면 nil을 내뱉는 서브 스크르비트 메소드를 만들어주면 된다.
extension Array {
	public subscript (safe index: Int) -> Element? {
		return indices ~= index ? self[index] : nil // iOS 9 or later
	}
}

let list = [1, 2, 3]
list[safe: 4] // nil
list[safe: 2] // 3

🤔 ‘~=’ 연산자는 뭘까?..

  • 대상이 특정 범위에 속하는 지 범위를 체크하는 연산자
  • switch 구문이 해당 연산자를 사용한다.(내부적으로 case의 범위를 체크할 때 사용한다.)

예를 통하여 활용을 알아보자.

  • 아래의 코드는 만약 n이 0과 10사이일 경우 n에 곱하기 10을 하라는 코드이다.
var n = 5
if 0..<10 ~= n {
  n *= 10
}

print(n) // 50
  • 따라서 아래의 코드에서
    • 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

1개의 댓글

comment-user-thumbnail
2023년 2월 2일

잘 보고 갑니다 ~

답글 달기