Перегрузка операторов в Kotlin позволяет определить или переопределить поведение стандартных операторов (например, +, -, *, /) для пользовательских типов данных.
Используется путем определения специальных функций-членов или функций-расширений с фиксированными именами, помеченными ключевым словом operator.
Функции для перегрузки операторов:
| Оператор | Имя функции |
|---|---|
+ | plus |
- | minus |
* | times |
/ | div |
% | rem, mod |
.. | rangeTo |
in | contains |
== | equals |
!= | equals (инвертированный результат) |
< | compareTo |
> | compareTo |
<= | compareTo |
>= | compareTo |
[] | get, set |
() | invoke |
a += b | plusAssign |
a -= b | minusAssign |
a *= b | timesAssign |
a /= b | divAssign |
a %= b | remAssign, modAssign |
+a | unaryPlus |
-a | unaryMinus |
!a | not |
a++, ++a | inc |
a--, --a | dec |
Пример перегрузки оператора + для класса Vector:
kotlin
Пример перегрузки оператора [] (get) для класса-коллекции:
kotlin