Я размышлял над этим утром о том, как правильно реализовать операторов сравнения в Swift. У меня есть класс (очень легкий класс дата), для которого я перегруженный оператор равенства:Предоставление минимальных реализаций для перегруженных операторов сравнения в Swift
func == (lhs: SimpleDate, rhs: SimpleDate) -> Bool {
if (lhs.day != rhs.day) {
return false
}
if (lhs.month != rhs.month) {
return false
}
if (lhs.year != rhs.year) {
return false
}
return true
}
Но теперь я также хотел бы иметь возможность использовать >
, <
, >=
и <=
. Когда дело доходит до предоставления этой функции, нужно ли писать все 4 функции?
Отсюда следует, что для >=
вы могли бы опираться на уже создаваемом комбинации == || >
, но мне было интересно, есть ли способ для этого функциональность будет автоматически определяться Swift, если он видит, что ==
и >
оба были реализованы ,
ie. есть способ, вместо того, чтобы писать эти 5 функций с глобальным охватом в моем классе, переопределить специальную функцию/оператор, который позволяет мне возвращать NSComparisonResult
или аналогичный, и пусть Swift автоматически перегрузит все эти операторы для меня?