swift에서 배열을 다룰때 무지하게 생각했던 것이 있다
공부를 할때 어떠한 배열이 눈에 보일때는 내가 저 배열에 원하는 데이터가 훤히 보이니 어떻게 다뤄야 할지 알기 때문에 코드를 무작정 쉽게 작성하는 버릇이 생기려고 한다
var array = [d, b, c, d, d, y]
array.remove(at:4)
// 해당 배열에 index4를 삭제한다
지금 배열에 d가 있다는것이 보이지만 앱을 만들다 보면 수백줄의 코드가 생겨 해당 배열을 확인하는것이 불가피 할때가 있다 그렇다면 저런 코드는 효율성이 없다
var array = [d, b, c, d, d, y]
var lastIndexOfD = array.lastIndex(of: "d")!
array.remove(at: lastIndexOfP)
print(array)
//출력 [d, b, c, d, y]
답은 간단했다
var array = [d, b, c, d, d, y]
if let lastIndexOfD = array.lastIndex(of: "d") {
array.remove(at: lastIndexOfD)
}
print(array)
//출력 [d, b, c, d, y]
보통 옵셔널을 다룰때 if let 바인딩을 통해서 논리적으로 unrapping하여 사용한다 이를 배열에서 다룰때 풀이해본다면
해당 배열의 데이터가 nil이 아니면(임시값이 비어있지 않다면) 배열의 마지막 요소에 "d"를 찾으면 if let 바인딩의 상수에 할당하여 할당된 상수를 remove(at:)함수를 이용하여 삭제한다
보통 이렇게 내가 원하는 배열의 데이터를 확실하게 확인하지 못할때 특정한 데이터를 확인,삭제하고 싶은경우 위 문법을 사용하고 논리적으로 해당 배열을 확인한 후에 다루도록 하자
헷갈렸으니 기록한다