Lambda expressions are a powerful feature in Kotlin that allow you to create anonymous functions. They provide a concise way to write function literals, making your code more readable and expressive.
A lambda expression in Kotlin is enclosed in curly braces { }
. The basic syntax is as follows:
{ parameter(s) -> body }
Here's a simple example of a lambda that adds two numbers:
val sum = { a: Int, b: Int -> a + b }
println(sum(3, 5)) // Output: 8
Kotlin's type inference system often allows you to omit parameter types in lambda expressions. This makes your code even more concise:
val multiply = { a, b -> a * b }
println(multiply(4, 6)) // Output: 24
For lambdas with a single parameter, you can use the it
keyword instead of declaring the parameter explicitly:
val square = { it * it }
println(square(5)) // Output: 25
Lambdas are often used with higher-order functions, which are functions that take other functions as parameters or return them. Here's an example using the filter
function:
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // Output: [2, 4, 6, 8, 10]
When a lambda is the last argument in a function call, you can move it outside the parentheses:
val numbers = listOf(1, 2, 3, 4, 5)
numbers.forEach { println(it) }
Lambdas can capture variables from the outer scope, creating closures:
var sum = 0
val numbers = listOf(1, 2, 3, 4, 5)
numbers.forEach { sum += it }
println(sum) // Output: 15
it
keyword for single-parameter lambdasLambda expressions are a cornerstone of functional programming in Kotlin. They enable you to write more expressive and concise code, especially when working with collections and higher-order functions. By mastering lambdas, you'll be able to create more elegant and efficient Kotlin programs.
To further enhance your Kotlin skills, explore related topics such as function types and inline functions.