티스토리 뷰

Swift

Swift ) ComparisonResult살펴보기

Zedd0202 2018. 3. 24. 19:33
반응형

안녕하세요 :) Zedd입니다. 지금 글 하나를 쓰고 있는데 거기에 ComparisonResult를 설명해야하는데....그냥 그 글 안에서 쓸까하다가 그냥 따로 꺼내서 씁니다.

한 글에서 하나의 주제만 다룬다...!! 제가 옛날에 했던 다짐이죠...

아무튼 ComparisonResult를 살펴보겠습니다.


ComparisonResult



swift의 compare메소드는 ComparisonResult 타입을 리턴하는데요, 정의는


comparisonResult 메소드 호출 또는 함수 호출에서 첫 번째 항목부터 마지막 항목 (코드에서 왼쪽에서 오른쪽)으로 지정된 순서대로 요청의 항목이 정렬되는 방식을 나타내는 데 사용됩니다. 


뭔소린지 모르겠는데, 이거 하나는 알 수 있겠네요. 두개를 비교해서 정렬되는 방식이 같으면, "같다"라고 할 수 있겠네요ComparisonResult를 살펴보자면,

enum ComparisonResult : Int


ComparisonResult는  위에서 보다시피, enum이랍니다. ComparisonResult에는 모가 있냐?





이렇게 3가지 케이스가 있는데요, 중간에 있는 Same이 제일 먼저 눈에 들어오네요. 

"The two operands are equal." 두 피연산자는 동일합니다. 


그럼 첫번째꺼랑 마지막꺼를 봅시다.


orderedAscending : 왼쪽 피연산자가 오른쪽 피연산자보다 작습니다.


orderedDescending : 왼쪽 피연산자가 오른쪽 피연산자보다 큽니다.


이게 먼 소리여;; 할 수도 있죠. 예제를 볼게요. 

var str1 = "hello, zedd"

var str2 = "hello, zedd"


자, 두개의 문자열이 있어요. 두개는 똑같은 걸 볼 수 있습니다.


str1.compare(str2, options: [])


이렇게 하면..? 



..... ComparisonResult이 나옴...

그럼 rawValue를 뽑아봅시다.


그럼 갑자기 뜬금없이 0이 나오게 됩니다. 

왜 0이 나왔냐????


Same의 rawValue가 0이라서 ㅎ

그럼 orderedAscending이랑 orderedDescending도 봅시다.


case orderedAscending = -1
case orderedDescending = 1


orderedAscending은 -1이고, orderedDescending은 1이네요!

그럼 언제;;;;얘네가 나오냐? 

orderedAscending의 정의가 "왼쪽 피연산자가 오른쪽 피연산자보다 작습니다."라고 했죠?

str1.compare(str2, options: [])

여기서 str1이 왼쪽 피연산자고, str2가 오른쪽 피연산자입니다.

왼쪽, 즉 str1이 "작으면"  orderedAscending, 즉 rawValue로 -1이 나오겠네요. 확인해볼까요? 

var str1 = "hello, ze"

var str2 = "hello, zedd"

str1.compare(str2, options: []).rawValue//-1

여기까지만 보면, 

아!~~!~!~!~!~ 글자수가 작으면, 즉, 문자열 길이가 더 작다는 말이구나 ㅎㅎ라고 생각 할 수 있는데요, 아닙니다.

var str1 = "z"

var str2 = "hello, zedd"

str1.compare(str2, options: []).rawValue//1

여기서는 orderedDescending의 rawValue가 나왔네요. 즉 왼쪽 피연산자가 오른쪽 피연산자보다 큽니다.

== z가 "hello, zedd"보다 큽니다.


네!!!!!!!

"a"<"z"//true


뭐 이런식이죠. 아스키코드 값으로 비교하는 것 같아요 :0


"a"<"Z"//false


그러니까 str1은 첫글자가 z이고, str2는 첫글자가 h이니..str2. 즉 hello, zedd가 더 작게 되는 것이죠. 그래서 orderedDescending가 나오게 됩니다. 


ComparisonResult가 조금 이해가 가셨나요? 

다음글을 이해하시는데도 필요한..지식이에요 :)

도움이 되었길 바래요!!!!XD


반응형

'Swift' 카테고리의 다른 글

Swift 4.1 Released! - 1  (0) 2018.04.07
Swift ) NSString.CompareOptions종류  (0) 2018.03.24
Swift4.1 ) flatMap -> compactMap  (2) 2018.03.11
Swift ) API Design Guidelines  (0) 2018.01.25
Swift ) DateDecoding(Encoding)Strategy  (1) 2018.01.23