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.