안녕하세요 이웃님들 ~~~
오늘은 알고리즘 공부를 하다가 생각난 주제를 가지고 와 봤어요~~!!
바로 swift에서의 sort() 와 sorted()의 차이점을 알아보려고 하는데요.
먼저 애플 개발자 문서에서 정의를 살펴보면서 시작을 해 보겠습니다.
Array 객체에 대해서 사용되는 메서드 sort()는
Sorts the collection in place.
즉 Array 자체를 정렬된 상태로 바꿔버리는 메서드예요. 보다시피 return이 따로 없는 메서드입니다.
이렇게 example이라는 함수가 있다면, 이 함수가 실행된 후에 array 를 print 해보면
["1", "2", "3", "6", "9"] 이렇게 정렬이 될 거예요.
array 원본 자체를 mutating 즉 변형 시켜버리는 것 입니다.
위에서 쓴 array를 그대로 사용합니다. sort()와 똑같이 사용하게 되면 어떻게 될까요??
잉? result를 왜 사용하지 않았냐고 컴파일러가 경고등을 켜줍니다.
즉 리턴된 값이 무언가 있다는 거지요!
아래와 같이 간단 정의를 보면 Element들이 담긴 배열을 리턴해주고 있습니다.
따라서 array.sorted() 는 어떤 배열을 주는 것인데, 원본(array)를 변형시킨 복제를 새로운 배열로 주는 것입니다.
따라서 array 원본은 변하지 않고 새로 만들어진 배열을 할당한 sortedArray라는 배열은 완전히 다른 배열이 되는 것입니다.
print를 하게 되면
array 는 여전히 [ "3", "2", "1", "6", "9"] 이고
sortedArray는 array와 상관없는 별개의 배열이 되어서
["1", "2", "3", "6", "9"] 일 것입니다.
이제 sort와 sorted의 차이가 이해 되셨나요?! ㅎㅎ
혹시 잘못된 점이 있거나 궁금한 점이 있으시면 언제든 댓글을 남겨주세요! 감사합니다 :)
[Swift, iOS] i18N Localizing 다국어 지원하는 앱 만들기 (1) | 2022.05.12 |
---|---|
[Swift] Dependency Injection 의존성 주입 비유로 쉽게 이해하기 (3) | 2022.05.11 |
[iOS/Swift] Protocol 프로토콜을 재미있게 이해해보자 (2) | 2022.02.19 |
[iOS/Swift] 스택(Stack)과 스택 오버플로우란? 예제로 알아보기 (0) | 2022.02.16 |
[Swift] 스위프트의 값 타입과 참조 타입 (코드로 실험하기) (0) | 2022.02.15 |