Ответ 1
Протокол Comparable расширяет Equatable protocol → реализует оба из них
В Справочник Apple - пример из Apple (в ссылке на Сопоставимый протокол) вы можете увидеть, как вы должны это делать: Не помещайте реализации операции в пределах класса, а скорее на внешний/глобальный охват. Также вам нужно реализовать оператор <
из протокола Comparable
и ==
из Equatable
.
Правильный пример:
class Person : Comparable {
let name : String
init(name : String) {
self.name = name
}
}
func < (lhs: Person, rhs: Person) -> Bool {
return lhs.name < rhs.name
}
func == (lhs: Person, rhs: Person) -> Bool {
return lhs.name == rhs.name
}
let paul = Person(name: "Paul")
let otherPaul = Person(name: "Paul")
let ben = Person(name: "Ben")
paul > otherPaul // false
paul <= ben // false
paul == otherPaul // true