You have certainly encountered these terms before, at least when you wanted to run your program or when you were inserting something into a hashmap.
Exploring Kotlin: Varargs and Infix Calls
Kotlin offers several advanced features that make code more expressive and concise. Two such features are varargs
and infix calls. In this article, we’ll explore these features and compare them to their Java counterparts.
Varargs in Kotlin
varargs
(variable-length arguments) allow a function to accept a variable number of arguments. This is particularly useful when you don’t know beforehand how many arguments will be passed to the function.
Kotlin Example
In Kotlin, you define a varargs
parameter by using the vararg
keyword. Here’s an example:
fun printAll(vararg messages: String) {
for (message in messages) {
println(message)
}
}
fun main() {
printAll("Hello", "World", "Kotlin", "Varargs")
}
Infix Calls in Kotlin
Infix calls allow functions with a single parameter to be called without using parentheses or the dot notation. This can make the code more readable, especially when defining custom operators.
Kotlin Example
To define an infix function in Kotlin, use the infix
keyword. Here’s an example:
infix fun Int.times(str: String) = str.repeat(this)
fun main() {
val result = 2 times "Hello "
println(result)
}
In this example, times
is an infix function that repeats a string a given number of times. It’s called using the infix notation 2 times "Hello "
.
Another usage of infix call:
class Pack<T,S>(
val i1: T,
val i2: S,
){
fun putTogether() = "$i1 $i2"
}
infix fun <T,S> T.pack(other:S) = Pack(this, other)
class VarargsClassMain {}
fun main(array: Array<String>) {
val list = listOf("args: ", *array)
println(list)
val test: Pack<String, String> = "Hello" pack "World"
println(test.putTogether())
}
The Pack
class and pack
infix function provide a flexible and readable way to combine two values of different types into a single object, with an easy-to-use concatenation method.
Benefits of Kotlin’s Features
- Varargs: Kotlin’s
vararg
provides a concise way to define functions that accept a variable number of arguments, similar to Java but with a more readable syntax. - Infix Calls: Infix calls in Kotlin can make the code more readable and expressive, especially when creating DSLs (Domain-Specific Languages).
Conclusion
Kotlin’s varargs
and infix calls are powerful features that enhance the readability and expressiveness of the code. While Java offers similar functionality with varargs
, it lacks the elegant infix call syntax. These features, among others, contribute to Kotlin’s growing popularity as a modern, expressive language for the JVM.