В этой статье вы научитесь использовать инфиксную нотацию для вызова функции в 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
.
Количество строк пирамиды зависит от аргумента, переданного функции.