Swift에서 마지막 요소를 지우는 방법 중 dropLast()
, popLast()
, removeLast()
의 차이를 알아보겠습니다.
가장 큰 차이점은, dropLast()
는 Immutable,
popLast()
/ removeLast()
는 Mutable 입니다.
공식문서를 살펴보죠!
마지막 요소를 제외한, 나머지 요소의 시퀀스를 반환합니다.
// 구현부
func dropLast(_ k: Int) -> Self.SubSequence
컬렉션의 마지막 요소를 제거하고, 반환합니다.
// 구현부
mutating func popLast() -> Self.Element?
컬렉션의 마지막 요소를 제거하고, 반환합니다.
// 구현부
@discardableResult mutating func removeLast() -> Self.Element
이제 예시를 살펴보면,
var Array = [1, 2, 3, 4]
print(Array.dropLast(), Array) // Print [1, 2, 3] [1, 2, 3, 4]
print(Array.popLast()!, Array) // Print 4 [1, 2, 3]
print(Array.removeLast(), Array) // Print 4 [1, 2, 3]
dropLast()
는 Array의 마지막 요소를 제외한 배열을 반환하고, 기존 Array는 변경되지 않음을 확인할 수 있습니다.
반면에 popLast()
/ removeLast()
는 제거된 마지막 요소를 반환하고, 해당 요소가 기존 Array에서 제거되어있는 걸 확인할 수 있습니다.
위의 공식문서 구현부에서 확인할 수 있듯 popLast()
는 removeLast()
와 달리, 옵셔널을 반환합니다.
빈 배열에 popLast()
를 하면 nil 이 반환되지만, removeLast()
를 하면 컴파일 에러가 발생합니다.
빈 배열인지 확인 후 removeLast()
를 사용하거나, popLast()
의 nil 로 예외 처리를 해주면 됩니다!