Перегрузка операторов позволяет тебе переопределить, как стандартные операторы — такие как +, - или == — работают с твоими пользовательскими типами. Вместо того чтобы вызывать многословный метод типа vector.add(otherVector), ты можешь просто написать vectorA + vectorB.
Ты определяешь static func на твоём пользовательском типе, используя символ оператора в качестве имени функции. Вот пример со struct Vector:
struct Vector {
let x: Double
let y: Double
static func + (lhs: Vector, rhs: Vector) -> Vector {
return Vector(x: lhs.x + rhs.x, y: lhs.y + rhs.y)
}
}
let result = Vector(x: 1, y: 2) + Vector(x: 3, y: 4)
// result is Vector(x: 4, y: 6)
lhs (левый операнд) и rhs (правый операнд)staticoperator и дополнительной настройки== требует соответствия протоколу EquatableИспользуй перегрузку операторов, когда это действительно улучшает читаемость твоего кода и операция имеет очевидное, интуитивное значение для твоего типа. Избегай этого, когда поведение может удивить других разработчиков, так как неправильное использование может сделать код сложнее для понимания.
Перегрузка операторов в Swift должна быть реализована как метод экземпляра, а не как статический метод, чтобы правильно получить доступ к левому и правому операндам.
Новый — ещё не проверен сообществом
Вы