Member functions and extensions with a single parameter can be turned into infix functions.
- Defines an infix extension function on Int.
- Calls the infix function.
- Creates a Pair by calling the infix function to from the standard library.
- Here’s your own implementation of to creatively called onto.
- Infix notation also works on members functions (methods).
- The containing class becomes the first parameter.
Note that the example uses local functions (functions nested within another function).
fun main() {
infix fun Int.times(str: String) = str.repeat(this)
println(2 times "Bye ")
val pair = "Ferrari" to "Katrina"
println(pair)
infix fun String.onto(other: String) = Pair(this, other)
val myPair = "McLaren" onto "Lucas"
println(myPair)
val sophia = Person("Sophia")
val claudia = Person("Claudia")
sophia likes claudia
}
class Person(val name: String)
{
val likedPeople = mutableListOf<Person>()
infix fun likes(other: Person) { likedPeople.add(other) }
}