Я изучаю документацию Apple «Разработка приложений со Swift» и пробую примеры в разделе «Протоколы».В части Comparable Protocol я попробовал следующий код, не добавляя Comparable
к структурным ссылкам, и не столкнулся с какими-либо проблемами, он работает:
struct Employee: Equatable {
var firstName : String
var lastName : String
var jobTitle : String
var phoneNumber : String
static func ==(lhs: Employee, rhs : Employee) -> Bool {
return lhs.firstName == rhs.firstName && lhs
.lastName == rhs.lastName
}
static func <(lhs: Employee, rhs : Employee) -> Bool {
return lhs.lastName < rhs.lastName
}
}
let employee1 = Employee(firstName: "Ben", lastName: "Atkins", jobTitle: "Front Desk", phoneNumber: "415-555-7767")
let employee2 = Employee(firstName: "Vera", lastName: "Carr", jobTitle: "CEO", phoneNumber: "415-555-7768")
let employee3 = Employee(firstName: "Grant", lastName: "Phelps", jobTitle: "Senior Manager", phoneNumber: "415-555-7770")
let employee4 = Employee(firstName: "Sang", lastName: "Han", jobTitle: "Accountant", phoneNumber: "415-555-7771")
let employee5 = Employee(firstName: "Daren", lastName: "Estrada", jobTitle: "Sales Lead", phoneNumber: "415-555-7772")
let employees = [employee1, employee2, employee3, employee4, employee5]
let employeesSorted = employees.sorted(by: <)
for employee in employeesSorted {
print(employee)
}
Но когда я попытался отсортировать с оператором «больше чем» (<): </p>
print("Decending")
let employeesSorted2 = employees.sorted(by: >)
for employee in employeesSorted2 {
print(employee)
}
Произошло сообщение об ошибке:
ошибка: ссылка на функцию оператора '>' в 'Comparable' требует, чтобы 'Employee' соответствовал 'Comparable', пусть employeeSorted2= employee.sorted (by:>)
У вас есть веское объяснение этому несоответствию?