У цій статті ви навчитеся використовувати інфіксну нотацію для виклику функції в 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") )
Коли ви запускаєте програму, результат буде:
result = true result = false
У вищевказаній програмі використовується 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()
є функція infix, яка створює пірамідну структуру. Це функція-член класу Structure
, приймає лише один параметр типу Int
і починається з ключового слова infix
.
Кількість рядків піраміди залежить від аргументу, переданого функції.