Local functions are functions declared inside a function. They are also called nested functions. They are popular in scripting languages, but some other modern Object-Oriented languages, like Scala, Swift, and C# (since 7.0) also have them. One of the uses of local functions is code reuse. You can extract a piece of code that is repeated inside a local function so the code can be reused:
fun printUserDetails(user: User) {
fun tryPrint(str: String) {
if (str.length > 5) {
println(str)
}
else {
println("I print strings with more than 5 characters")
}
}
tryPrint(user.firstName)
tryPrint(user.lastName)
tryPrint(user.address)
}
You can see how the function tryPrint is declared inside the printUserDetails function. We can call the nested function just as we would a normal function...