Swift의 dropLast(), popLast(), removeLast() 의 차이

Jee.e (황지희)·2022년 10월 26일
1
post-custom-banner

Swift에서 마지막 요소를 지우는 방법 중 dropLast(), popLast(), removeLast() 의 차이를 알아보겠습니다.


가장 큰 차이점은, dropLast()Immutable,
popLast() / removeLast()Mutable 입니다.

공식문서를 살펴보죠!


1. dropLast()

마지막 요소를 제외한, 나머지 요소의 시퀀스를 반환합니다.

// 구현부
func dropLast(_ k: Int) -> Self.SubSequence

2. popLast()

컬렉션의 마지막 요소를 제거하고, 반환합니다.

// 구현부
mutating func popLast() -> Self.Element?

3. removeLast()

컬렉션의 마지막 요소를 제거하고, 반환합니다.

// 구현부
@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()removeLast() 와 달리, 옵셔널을 반환합니다.

빈 배열에 popLast() 를 하면 nil 이 반환되지만, removeLast() 를 하면 컴파일 에러가 발생합니다.

빈 배열인지 확인 후 removeLast() 를 사용하거나, popLast() 의 nil 로 예외 처리를 해주면 됩니다!

profile
교훈없는 경험은 없다고 생각하는 2년차 iOS 개발자입니다.
post-custom-banner

0개의 댓글