Kotlin поддерживает оператор перегрузки и инфиксные функции , Java также не поддерживает.
Эти языковые функции являются просто синтаксическим сахаром.Все, что вы делаете с операторами или инфиксными функциями, может быть выполнено без, но они могут очень помочь с удобочитаемостью вашего кода.
Инфиксная функция похожа на именованный оператор и может вызываться без точки и скобок.Пример из документации выглядит следующим образом:
infix fun Int.shl(x: Int): Int { ... }
// calling the function using the infix notation
1 shl 2
// is the same as
1.shl(2)
Другой пример - для настройки времени.Мне нравится определять инфиксные функции, такие как
infix fun TemporalAmount.before(instant: Instant): Instant =
instant.minus(this)
, которые позволяют мне писать
val yesterday = Period.ofDays(1) before Instant.now()
вместо
val yesterday = Instant.now().minus(Period.ofDays(1))