Претоварване на оператора

Езикът Kotlin ни позволява да реализираме предварително определен набор от оператори за нашите типове. Тези оператори имат фиксирано символно представяне (като + или *) и фиксиран приоритет. За да реализираме оператора, ние предоставяме функция-член или функция за разширение с фиксирано име и подходящ тип, т.е. тип отляво за двоични операции или тип аргумент за унарни операции. Функциите, които претоварват операторите, трябва да бъдат маркирани с модификатора на оператора .

След това описваме конвенциите, които управляват претоварването на оператора за различни типове оператори.

Унарни оператори

Одинарни префиксни оператори

Тази таблица демонстрира, че когато компилаторът обработва например израза + a, той прави следното:

  • Определя се видът на израза a, нека бъде T .
  • Изглежда функцията unaryPlus () с модификатора на оператора без параметри за приемник от тип T, т.е. функция член или функция разширение.
  • Ако функцията липсва или е двусмислена, това е грешка при компилацията.
  • Ако функцията присъства и нейният връщащ тип е R, изразът + a е от тип R .