티스토리 뷰

728x90

어제 문법 스터디 모임에서 removeLast()와 popLast()의 차이점에 대한 얘기가 나왔는데요. 

알아두면 좋을것 같아 블로그에 정리해 보려고 합니다.


 

두 메소드는 공통적으로 배열의 마지막 요소(Elelment)를 없애고 없앤값을 리턴 합니다.

 

차이점

언뜻보면 같지만 차이점은 리턴값에 있습니다.

 

removeLast()는 값이 무조건 존재해야하고,

popLast()는 값이 없으면 nil을 리턴한다는 차이점이 있어요!

 

 

예시

예시를 한번 볼까요 ?

 

 removeLast()

var foods = ["햄버거", "닭가슴살"]

let a = foods.removeLast()
let b = foods.removeLast()

print(a) // 닭가슴살
print(b) // 햄버거


print(foods) // []

 

이러면 foods는 텅 비어있습니다. 

이상태에서 removeLast()를 한번 더 하게 되면?

 

바로 에러가 나죠.

 

popLast()

 

 

popLast 메소드는 optional 타입을 리턴해요.

 

때문에 옵셔널을 아래와 같은 방법들로 제거해줍니다.

var foods = ["햄버거", "닭가슴살"]


if let a = foods.popLast() {
    print(a)
}
let b = foods.popLast()
let c = foods.popLast()

print(a)   // 닭가슴살 (optional binding)
print(b!)  // 햄버거   (forced unwrapping)
print(c)   // nil


print(foods)

 

옵셔널에 관해서는 추후 블로깅 해서 올리겠습니다. 

 

결론

 

배열의 값이 무조건 있을 경우에는 removeValue() 메소드를 

nil일 수도 있다면 popLast()를 사용하는게 좀더 안전 하다.

 

 

 

 

728x90