Сопоставимый
Comparable протокол позволяет сравнить два значения того же типа с помощью <, >, <=, и >= операторы отношения.
Библиотека стандарта Swift обеспечивает реализацию для >, <=, >=, и != операторы. В результате типы, соответствующие Comparable протокол требуется, чтобы реализовывать < и == операторы только. ( == оператор является требованием потому что Comparable наследовался от Equatable протокол.)
Сравнение значений
<
Определяет, является ли одно значение меньше, чем другое значение того же типа.
Объявление
func <(lhs: Self, rhs: Self) -> Bool
Обсуждение
Для приспосабливания протоколу необходимо обеспечить реализацию для < в глобальной области видимости. Необходимо возвратиться true если lhs значение является меньше, чем rhs значение, иначе false.
Вам решать для определения то, что «меньше, чем” означает для двух значений соответствующего типа:
struct MyStruct: Comparable {var name = "Untitled"}func <(lhs: MyStruct, rhs: MyStruct) -> Bool {return lhs.name < rhs.name}// Implementation of == required by Equatablefunc ==(lhs: MyStruct, rhs: MyStruct) -> Bool {return lhs.name == rhs.name}let value1 = MyStruct()var value2 = MyStruct()let firstCheck = value1 < value2// firstCheck is falsevalue2.name = "A New Name"let secondCheck = value2 < value1// secondCheck is true
