Сопоставимый
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 Equatable
func ==(lhs: MyStruct, rhs: MyStruct) -> Bool {
return lhs.name == rhs.name
}
let value1 = MyStruct()
var value2 = MyStruct()
let firstCheck = value1 < value2
// firstCheck is false
value2.name = "A New Name"
let secondCheck = value2 < value1
// secondCheck is true