Default and Named Arguments
Explore how Kotlin allows default argument values to evolve functions without breaking existing calls and how named arguments enhance code readability and reduce errors. Understand the best practices for positioning default parameters and using named arguments to write clearer, more maintainable code.
We'll cover the following...
Overloading of functions is common in Java and is the way to create functions that can take different number and type of arguments. That’s an option in Kotlin as well, but the feature of default arguments is a simpler and better way to evolve functions, though it requires recompilation as it breaks binary compatibility. Also, named arguments is a great way to create readable code. We’ll focus on those two features now.
Evolving functions with default arguments
Quickly glance at the greet() function we wrote earlier, repeated here for convenience.
fun greet(name: String): String = "Hello $name"
println(greet("Eve")) //Hello Eve
The greet() function has a hardcoded string “Hello”, but what if we want to provide the flexibility to the caller of the function to provide a pleasantry of its choice?
If we add a new parameter to the function, then any existing code that calls the function will break because those will be shy of the much needed, albeit new, parameter. In languages like Java we use overloading for this purpose, but that may lead to code duplication. Kotlin makes this task easy with default arguments.
A default argument is a parameter that takes a default value right after the declaration. If the caller doesn’t pass a value for that parameter, then the default value is used. Specify the name of the parameter, colon, type, followed by the assignment to the default value, using = ...