Kotlin Infix Function Call

Before you learn how to create a function having infix notation, let's explore two commonly used infix functions.

When you use || and && operations, the compiler look up for or and and functions respectively, and calls them under the hood.

These two functions support infix notation.


Example: Kotlin or & and function

fun main(args: Array<String>) {
    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")
}

When you run the program, the output will be:

result = true
result = false

In the above program, a or b instead of a.or(b), and a and b instead of a.and(b) is used. It was possible because these two functions support infix notation.


How to create a function with infix notation?

You can make a function call in Kotlin using infix notation if the function

  • is a member function (or an extension function).
  • has only one single parameter.
  • is marked with infix keyword.

Example: User-defined Function With Infix Notation

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<String>) {
    val p = Structure()
    p createPyramid 4       // p.createPyramid(4)
}

When you run the program, the output will be:

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

Here, createPyramid() is an infix function that creates a pyramid structure. It is a member function of class Structure, takes only one parameter of type Int, and starts with keyword infix.

The number of rows of the pyramind depends on the argument passed to the function.

Did you find this article helpful?