Comparable
을 준수한다.String
은 유니코드 값이 기준이다.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
Swift 5.3
미만의 경우 Comparable
을 채택하고 구현해주어야 함enum Number : Int, Comparable{
static func < (left : Number, right : Number) -> Bool{
return left.rawValue < right.rawValue
}
case one, two, three
}
연관값
이 없거나 모두 Comparable을 채택하고 있는 경우는
Comparable
을 채택하는 것만으로도 사용이 가능함
연관값
중 하나라도 Comparable을 채택하지 않은 경우
채택 뿐 아니라 <
메서드를 직접 구현해줘야 한다.