본문 바로가기
Swift

Array의 index를 안전하게 처리하는 방법

by zinozino 2023. 4. 18.

Sequence Protoocol을 따는 Collection Protocol은 Indexing에 관한 프로토콜입니다. Dictionary 또한 Collection protocol을 따르고 있습니다.

그렇기 때문에 Array에서 잘못 인덱스를 접근하는 것을 방지하기 위해서는 Collection Protocol로 접근하는 것이 좋습니다.

extension Collection {
    subscript(safe index: Index) -> Element? {
		if self.indices.contains(index) {
			return self[index]
		}
	return nil
    }
}

indices라는 Collection프로토콜의 속성은 해당 컬렉션의 모든 인덱스를 Collection으로 반환합니다.

해당 index가 포함되어 있는지 확인 후 있다면  Array의 Element(Generic) 반환하고, 없다면 nil을 반환합니다.

 

 

추가


※ Array를 확장한다면 더 높은 성능을 보여줄 수 있습니다. (하리 댓글을 보고 추가합니다.)

 

extension Array {
	subscript(optional index: Int) -> Element? {
    	if 0..<indices.count ~= index {
        	return self[index]
        }
        return nil
    }
}

 

10 -5승이니   0.000018   < 0.0002 이므로 훨씬 빠릅니다.

'Swift' 카테고리의 다른 글

Swift Optional unWrapping을 좀 더 간편하게 쓰는 법  (0) 2023.04.20
Array에서 중복 제거하는 방법  (0) 2023.04.19
KeyPath  (2) 2023.01.16
FP에서 Setter 사용법  (0) 2022.12.10
Custom Operator =>  (0) 2022.12.02