Lambdas let you write small pieces of code that can be passed around and used like values. This helps you write programs by combining simple functions, which is the heart of functional style.
Why lambdas enable functional style in Kotlin
val lambdaName: (InputType) -> ReturnType = { parameter -> expression }Lambdas are anonymous functions you can store in variables or pass as arguments.
The arrow -> separates parameters from the function body.
val square: (Int) -> Int = { x -> x * x }
val greet: (String) -> String = { name -> "Hello, $name!" }
it instead of naming it.val isEven: (Int) -> Boolean = { it % 2 == 0 }
This program uses lambdas with filter and map to select even numbers and square all numbers in a list. It shows how lambdas help write clear, functional-style code.
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val evenNumbers = numbers.filter { it % 2 == 0 } val squares = numbers.map { it * it } println("Even numbers: $evenNumbers") println("Squares: $squares") }
Lambdas make your code shorter and easier to read by removing the need for full function declarations.
Using lambdas encourages writing code without changing data, which helps avoid bugs.
Lambdas are small, unnamed functions you can use anywhere.
They let you pass behavior as data, which is key to functional programming.
Using lambdas helps write clear, concise, and predictable code.
Practice
Solution
Step 1: Understand what lambdas do
Lambdas are small functions that can be passed around like data.Step 2: Connect lambdas to functional style
Functional programming relies on passing behavior (functions) as arguments, which lambdas enable.Final Answer:
Because they allow passing functions as arguments to other functions -> Option DQuick Check:
Lambdas enable passing behavior = C [OK]
- Thinking lambdas only replace loops
- Believing lambdas optimize speed automatically
- Confusing lambdas with variable declarations
Solution
Step 1: Recall Kotlin lambda syntax
Kotlin lambdas use curly braces with parameters before the arrow, like { a, b -> ... }.Step 2: Compare options
val sum = { a: Int, b: Int -> a + b } matches Kotlin syntax. Options B, C, and D use syntax from other languages or incorrect forms.Final Answer:
val sum = { a: Int, b: Int -> a + b } -> Option AQuick Check:
Kotlin lambdas use { params -> body } = A [OK]
- Using => instead of -> in Kotlin
- Writing full function syntax inside lambda
- Using 'lambda' keyword which Kotlin doesn't have
val numbers = listOf(1, 2, 3, 4)
val doubled = numbers.map { it * 2 }
println(doubled)Solution
Step 1: Understand the map function with lambda
map applies the lambda to each element, here multiplying each by 2.Step 2: Calculate the transformed list
1*2=2, 2*2=4, 3*2=6, 4*2=8, so the list becomes [2, 4, 6, 8].Final Answer:
[2, 4, 6, 8] -> Option CQuick Check:
map doubles each element = [2, 4, 6, 8] [OK]
- Thinking map modifies original list
- Confusing map with filter
- Expecting syntax error due to lambda
val list = listOf(1, 2, 3)
val filtered = list.filter { it > 2 }
val result = filtered.map { it * 2 }
println(result)Solution
Step 1: Analyze filter and map usage
filter keeps elements greater than 2, so only 3 remains.Step 2: Apply map to filtered list
map multiplies 3 by 2, resulting in [6].Final Answer:
No error; code runs and prints [6] -> Option BQuick Check:
filter then map works fine = A [OK]
- Assuming syntax error in lambdas
- Thinking map can't follow filter
- Confusing filter and map roles
Choose the correct Kotlin code snippet.
Solution
Step 1: Filter names longer than 3 characters
Use filter { it.length > 3 } to keep only long names.Step 2: Create a map of name to length
Use associate { it to it.length } to map each name to its length.Final Answer:
val result = names.filter { it.length > 3 }.associate { it to it.length } -> Option AQuick Check:
filter then associate with pairs = B [OK]
- Using associateWith incorrectly
- Trying to map booleans instead of names
- Returning null in associate causing errors
Ready to prove it?
Pass the test and this pattern moves unknown
