The infix
Keyword
If you add the infix
keyword to a function declaration, you can use that function using infix notation, skipping the parentheses and looking more like the in
operator:
private val VOWELS = "[aeiouAEIOU]".toRegex()
infix fun String.disemvowel(replacement: String) = VOWELS.replace(this, replacement)
fun main() {
println("this is very impolite" disemvowel "*")
}
To “disemvowel” some text is simply to remove the vowels, replacing them with placeholders or just eliminating them outright. Here, we have a disemvowel()
extension function on String
that removes the English-language vowels (ignoring “y” and “Y” because English is weird). You are welcome to call disemvowel()
using regular function notation:
println("this is very impolite".disemvowel("*"))
However, the infix
keyword means that we can use this function much like we would use an operator like in
:
- No dot connecting the function name to the object on which we are calling it (the “receiver”)
- No parentheses around the parameter
Regardless of whether you use disemvowel()
as a function or as a pseudo-operator, you get a disemvoweled string:
th*s *s v*ry *mp*l*t*
Prev Table of Contents Next
This book is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.