В тази статия ще се научите да използвате infix нотация за извикване на функция в 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
ключова дума.
Пример: Дефинирана от потребителя функция с 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
.
Броят на редовете на пирамидата зависи от аргумента, предаден на функцията.