Перегрузка операторов в Kotlin
НАВИГАЦИЯ ПО СТРАНИЦЕ
Перегрузка операторов в Kotlin позволяет использовать знаки операторов для пользовательских типов данных, таких как классы. Давайте рассмотрим основные аспекты перегрузки операторов.
Пример перегрузки оператора сложения +
class Point(val x: Int, val y: Int) {
operator fun plus(other: Point): Point {
return Point(x + other.x, y + other.y)
}
}
В этом примере для класса Point перегружен оператор сложения +. Теперь мы можем складывать две точки следующим образом:
val point1 = Point(1, 2)
val point2 = Point(3, 4)
val result = point1 + point2
Пример перегрузки оператора умножения *
class Vector(val x: Int, val y: Int) {
operator fun times(scalar: Int): Vector {
return Vector(x * scalar, y * scalar)
}
}
Здесь оператор умножения * перегружен для класса Vector, что позволяет умножать вектор на скаляр:
val vector = Vector(2, 3)
val scaledVector = vector * 5
Перегрузка других операторов
Кроме сложения и умножения, в Kotlin можно перегружать и другие операторы, такие как -, /, %, ==, <, >, и многие другие.
class Complex(val real: Double, val imaginary: Double) {
operator fun plus(other: Complex): Complex {
return Complex(real + other.real, imaginary + other.imaginary)
}
operator fun times(scalar: Double): Complex {
return Complex(real * scalar, imaginary * scalar)
}
operator fun equals(other: Complex): Boolean {
return real == other.real && imaginary == other.imaginary
}
}
Этот пример показывает перегрузку операторов для класса Complex, представляющего комплексные числа.
Перегрузка операторов в Kotlin обеспечивает удобный и читаемый синтаксис для пользовательских типов данных, позволяя использовать знаки операторов в стиле, аналогичном встроенным типам данных.