Вызов функции Kotlin с использованием инфиксной нотации

В этой статье вы научитесь использовать инфиксную нотацию для вызова функции в Kotlin (с помощью примеров).

Прежде чем вы узнаете, как создать функцию с инфиксной нотацией, давайте рассмотрим две наиболее часто используемые инфиксные функции.

При использовании ||и &&операции, компилятор искать для или и и функций , соответственно, и называет их под капотом.

Эти две функции поддерживают инфиксную нотацию.

Пример: Котлин или & и функция

 fun main(args: Array) ( val a = true val b = false var result: Boolean result = a or b // a.or(b) println("result = $result") result = a and b // a.and(b) println("result = $result") )

Когда вы запустите программу, вывод будет:

 результат = правда результат = ложь

В приведенной выше программе a or bвместо a.or(b)и a and bвместо a.and(b). Это стало возможным, потому что эти две функции поддерживают инфиксную нотацию.

Как создать функцию с инфиксной нотацией?

Вы можете вызвать функцию в Kotlin, используя инфиксную нотацию, если функция

  • является функцией-членом (или функцией расширения).
  • имеет только один единственный параметр.
  • помечен infixключевым словом.

Пример: определяемая пользователем функция с инфиксной нотацией

 class Structure() ( infix fun createPyramid(rows: Int) ( var k = 0 for (i in 1… rows) ( k = 0 for (space in 1… rows-i) ( print(" ") ) while (k != 2*i-1) ( print("* ") ++k ) println() ) ) ) fun main(args: Array) ( val p = Structure() p createPyramid 4 // p.createPyramid(4) )

Когда вы запустите программу, вывод будет:

  * * * * * * * * * * * * * * * * 

Вот createPyramid()инфиксная функция, которая создает структуру пирамиды. Это функция-член класса Structure, принимает только один параметр типа Intи начинается с ключевого слова infix.

Количество строк пирамиды зависит от аргумента, переданного функции.

Интересные статьи...