Назад к задачам
SelectyПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
7
Почему стоит реализовать протокол Equatable через расширение
Компании, где спрашивали:
Условие задачи
В Swift часто требуется, чтобы типы могли сравниваться на равенство. Одним из удобных способов добавить такое поведение является объявление соответствия протоколу Equatable в extension. При этом можно задать условие, при котором тип будет соответствовать протоколу только если его параметры тоже поддерживают Equatable. Ниже показан пример, где Result получает автоматическую реализацию оператора ==, если и тип Value, и тип Error являются сравнимыми.
extension Result: Equatable where Value: Equatable, Error: Equatable {
static func == (lhs: Result, rhs: Result) -> Bool {
switch (lhs, rhs) {
case .success(let lhsVal), .succes(let rhsVal):
return lhsVal == rhsVal
case .failure(let lhsVal), .failure(let rhsVal):
return lhsVal == rhsVal
default:
return false
}
}
}