Возможно ли перегрузить оператор эквивалентности (==) для пользовательского класса внутри этого пользовательского класса. Однако я знаю, что возможно, что этот оператор перегружен вне класса. Оцените любой пример кода. Спасибо заранее.
Оператор перегрузки эквивалентности (==) для пользовательского класса в Swift
Ответ 1
Добавить глобальные функции. Например:
class CustomClass {
var id = "my id"
}
func ==(lhs: CustomClass, rhs: CustomClass) -> Bool {
return lhs == rhs
}
func !=(lhs: CustomClass, rhs: CustomClass) -> Bool {
return !(lhs == rhs)
}
Для соответствия Equatable protocol в Swift 2
class CustomClass: Equatable {
var id = "my id"
}
func ==(left: CustomClass, right: CustomClass) -> Bool {
return left.id == right.id
}
Для соответствия Equatable protocol в Swift 3
class CustomClass {
var id = "my id"
}
extension CustomClass: Equatable {
static func ==(lhs: CustomClass, rhs: CustomClass) -> Bool {
return lhs.id == rhs.id
}
}
Ответ 2
Нет, операторы перегружены с использованием глобальных функций.