Претоварване на оператора
Езикът Kotlin ни позволява да реализираме предварително определен набор от оператори за нашите типове. Тези оператори имат фиксирано символно представяне (като + или *) и фиксиран приоритет. За да реализираме оператора, ние предоставяме функция-член или функция за разширение с фиксирано име и подходящ тип, т.е. тип отляво за двоични операции или тип аргумент за унарни операции. Функциите, които претоварват операторите, трябва да бъдат маркирани с модификатора на оператора .
След това описваме конвенциите, които управляват претоварването на оператора за различни типове оператори.
Унарни оператори
Одинарни префиксни оператори
Тази таблица демонстрира, че когато компилаторът обработва например израза + a, той прави следното:
- Определя се видът на израза a, нека бъде T .
- Изглежда функцията unaryPlus () с модификатора на оператора без параметри за приемник от тип T, т.е. функция член или функция разширение.
- Ако функцията липсва или е двусмислена, това е грешка при компилацията.
- Ако функцията присъства и нейният връщащ тип е R, изразът + a е от тип R .