Найти тему
Kotlin King

Kotlin. Зачем нужно ключевое слово infix?

Давайте разберемся зачем нужно ключевое слово infix в Котлин
Давайте разберемся зачем нужно ключевое слово infix в Котлин

Здравствуй, дорогой читатель!

Сегодня мы поговорим зачем нужно ключевое слово infix в Котлине.

А нужно оно чтобы сделать красивый код на Kotlin еще красивее:)

👉 Допустим вы хотите возвести некоторое число в степень, и у вас есть функция для этого:

fun Int.raise(n : Int) = this.toDouble().pow(n).toInt()

Обычно вы вызываете её вот так:

fun main() {

val result = 2.raise(3)

println(result)

}

Всё хорошо, но можно сделать красивее и нагляднее, например вообще избавиться от точки и скобок. Для этого нам понадобится пометить нашу функцию ключевым словом infix:

infix fun Int.raise(n : Int) = this.toDouble().pow(n).toInt()

И теперь мы можем вызывать ее вот так:

fun main() {

val result = 2 raise 3

println(result)

}

Вы видите, что ушли скобки, точка, а сам вызов функции выглядит как какая-то операция встроенная в сам Kotlin :) Но — нет, она полностью наша.

👉 Рассмотрим ещё пример. Допустим у нас есть функция, которая считает количество определенных символов в строке. Сразу пометим ее как infix-ную:

infix fun String.count(char : Char) = this.count { it == char }

Мы можем вызвать ее вот так :

fun main() {

val result = "Vasya Petya Masha " count 'a'

println(result)

}

И узнать сколько букв «а» в строке. Ну разве это не красиво? :)

👉 Кстати, infix-ной можно сделать не любую функцию. Подходят функции расширения или же функции классов, кроме того можно писать такие функции внутри других функций. Но важно знать что, параметр у такой функции может быть только один, он не должен быть vararg, и не должен иметь значения по умолчанию.

Вот пример где используется infix-функция в классе:

class MyMath {

infix fun cubing(n : Int) = n * n * n

}

fun main() {

val math = MyMath()

val result = math cubing 2

print(result)

}

👉 Здесь важно отметить, что такая функция должна иметь получателя, а не только параметр. В примере выше, им выступает переменная math.

Пока на этом всё. Спасибо что читали, если есть вопросы то задайте их в комментариях.

Ставте лайк и подписывайтесь на канал, это действительно помогает для продвижения.

А я пока поищу про какие ещё фишки Котлин вам рассказать :)