티스토리 뷰
안녕하세요 :) Zedd입니다. 지금 글 하나를 쓰고 있는데 거기에 ComparisonResult를 설명해야하는데....그냥 그 글 안에서 쓸까하다가 그냥 따로 꺼내서 씁니다.
한 글에서 하나의 주제만 다룬다...!! 제가 옛날에 했던 다짐이죠...
아무튼 ComparisonResult를 살펴보겠습니다.
ComparisonResult
swift의 compare메소드는 ComparisonResult 타입을 리턴하는데요, 정의는
comparisonResult는 메소드 호출 또는 함수 호출에서 첫 번째 항목부터 마지막 항목 (코드에서 왼쪽에서 오른쪽)으로 지정된 순서대로 요청의 항목이 정렬되는 방식을 나타내는 데 사용됩니다.
뭔소린지 모르겠는데, 이거 하나는 알 수 있겠네요. 두개를 비교해서 정렬되는 방식이 같으면, "같다"라고 할 수 있겠네요. ComparisonResult를 살펴보자면,
enum ComparisonResult : Int
ComparisonResult는 위에서 보다시피, enum이랍니다. ComparisonResult에는 모가 있냐?
이렇게 3가지 케이스가 있는데요, 중간에 있는 Same이 제일 먼저 눈에 들어오네요.
"The two operands are equal." 두 피연산자는 동일합니다.
그럼 첫번째꺼랑 마지막꺼를 봅시다.
ordered
ordered Descending : 왼쪽 피연산자가 오른쪽 피연산자보다 큽니다.
이게 먼 소리여;; 할 수도 있죠. 예제를 볼게요.
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 |
- 제이슨 파싱
- fastlane
- WKWebView
- SwiftUI
- 스위프트 문법
- Combine
- iOS delegate
- 피아노
- WWDC
- swift delegate
- Git
- swift sort
- swift tutorial
- np-complete
- UIBezierPath
- Xcode
- 스위프트
- swift 공부
- WidgetKit
- FLUTTER
- Swift
- actor
- ios 13
- swift3
- 회고
- swift array
- IOS
- Accessibility
- np-hard
- github
- Total
- Today
- Yesterday