Swift에서 'Sort' 와 'Sorted'의 차이

2023. 2. 23. 22:04IT/iOS

Python에 익숙해진 손뚱아리가 습관적으로 Sorted를 눌러대려니 Swift는 내게 네가지 옵션을 줬다.

 

 

뭐가 다른건가 해서 일단 가장 익숙한 sorted를 선택해봤다. 원하는 형태로 클로져와 리턴값을 뚝딱거려주니..

당연하게도 경고를 준다.

아래의 예시는 dayList에 속하는 Day 자료형들을 추출해서 날짜순으로 정렬을 시도한 것이다.

 

sorted를 통해 나온 결과가 사용되지 않았다는 것.

실제로 빌드해봐도 리스트가 정렬되지 않고 요지부동인 걸 확인할 수 있었다.

 

 


 

 

무엇인 문제인고 정의를 살펴보니,

 

Sort:

 

Sorted:

 

다시말해 Sort의 경우 콜랙션으로 묶인 데이터들을 직접 주어진 정렬 기준에 따라 정렬하는 데에 반해 Sorted는 해당 데이터들을 고스란히 복사하여 정렬 기준에 따라 정렬 후 반환하기 때문에 원본 데이터에 대한 조작이 없게 된다.

 

그러니 위에서처럼 원본 데이터의 정렬을 원할 때에 Sorted를 사용하면 적용되지 않는 것. 이때 파라미더로 by를 통해 정렬기준을 부여하지 않으면 기본값을 기준으로 자동정렬을 하게 된다.

 

 

 

 

 

따라서, 원본 데이터의 정렬 상태의 보존이 중요한 경우라면 Sorted를 통해 복제된 데이터를 다루는 것이 유용하며, 이 데이터 복제과정에서 필연적으로 메모리가 두 배 정도 사용되므로, 데이터의 양이 방대한 경우 등에는 sort함수를 사용하는 것이 적절할 것으로 판단된다.

 

 

 

참고:

https://do-misol.tistory.com/75