Введение в инфикс и операторы в Kotlin
Обычный вызов метода идет через точку: сначала объект, затем имя и аргументы в скобках. Для некоторых функций Kotlin разрешает другой стиль - имя стоит между получателем и одним аргументом, без точки и без скобок вокруг аргумента.
Такую функцию помечают словом infix перед
fun. У нее ровно один параметр, кроме
скрытого this. Объявление для своего
типа выглядит так:
class Label(val text: String)
infix fun Label.combinedWith(other: Label): Label {
return Label("${this.text}-${other.text}")
}
Вызов читается как короткая фраза: слева получатель, посередине имя функции, справа аргумент. Порядок тот же, что у точечной записи, но запись короче:
fun main() {
val left = Label("api")
val right = Label("v2")
val tag = left combinedWith right
println(tag.text)
}
Инфикс удобен, когда операция связывает два равных по смыслу значения: читатель видит связь напрямую, а не цепочку точек и скобок вокруг одного аргумента.