Comparable

냐옹·2024년 7월 15일
0

IOS

목록 보기
30/32

Comparable

  • 기본 자료형은 자동으로 컴파일러가 Comparable을 준수한다.
  • String은 유니코드 값이 기준이다.

구조체에서의 Comparable

  • 구조체에서 Comparable 프로토콜을 채택하기 위해서는 단순히 채택만 해서는 안되고, 어떻게 무슨 값을 비교해주어야 할지를 명시해주어야 한다. 이를 위해서 메서드를 구현해줘야 하는데
  • <, <=, > .. 에 대해서 전부 메서드를 구현해줄 필요는 없다.
  • <에 대해서만 구현하면 된다.
struct Person : Comparable{
	static func < (left : Person, right : Person) -> Bool{
    	return left.age < right.age
    }
  
  	var name = ""
    var age = 0
}

let johnson = Person.init(name : "Johnson", age:30)
let micheal = Person.init(name : "Micheal", age:41)

// 이후에 
johnson < micheal // true

열거형에서의 Comparable

  • 열거형의 경우에 Swift 버전에 따라서 조건이 다르다.
  • Swift 5.3미만의 경우 Comparable을 채택하고 구현해주어야 함
enum Number : Int, Comparable{
	static func < (left : Number, right : Number) -> Bool{
    	return left.rawValue < right.rawValue
    }
  
  	case one, two, three
}
  • 세부사항 ( Swift 5.3이상에서 )
  1. 연관값이 없거나 모두 Comparable을 채택하고 있는 경우는
    Comparable을 채택하는 것만으로도 사용이 가능함

  2. 연관값 중 하나라도 Comparable을 채택하지 않은 경우
    채택 뿐 아니라 <메서드를 직접 구현해줘야 한다.

출처 : https://babbab2.tistory.com/150

0개의 댓글