Перегрузка операторов в Kotlin

kotlin

Code expressivity++ with operator overloading — статья о перегрузке операторов на примере, как бы странно это ни звучало, хора певцов.

Допустим, у нас есть класс Choir (хор), в который можно добавлять певцов (Singer):

Теперь, чтобы добавить певца, необходимо сделать так:

Все понятно и логично, но было бы более привычно делать это так:

Именно для этого нужна перегрузка операторов. Например, чтобы добавить оператор +=, достаточно сделать так:

Обрати внимание на ключевое слово operator и имя функции ( plusAssign). У каждого оператора есть свое имя (полный список), а перегрузка одного оператора никогда не приводит к перегрузке его «родственников». К примеру, перегрузка оператора + не приведет к перегрузке оператора ++.

РЕКОМЕНДУЕМ:
Введение в Kotlin Flow

Перегрузка не всех операторов полезна всегда. В данном случае может быть лучше воспользоваться оператором вхождения ( contains):

Благодаря ему можно сделать так:

Перегрузку операторов можно использовать в функциях-расширениях:

Теперь добавить View к ViewGroup можно с помощью оператора:

Как и в других языках, при перегрузке операторов в Kotlin следует руководствоваться простым правилом: краткость не всегда повышает читаемость кода. Стоит несколько раз подумать перед тем, как применять перегрузку.

Операторы, поддерживающие перегрузку
Операторы, поддерживающие перегрузку
Понравилась статья? Поделиться с друзьями:
Добавить комментарий