A lambda expression is a small block of code that can be passed around and executed later. It is like a mini-function without a name.
Click to reveal answer
beginner
How do you pass a lambda to a function in Kotlin?
You define a function parameter with a function type, then pass the lambda when calling the function. For example: fun doSomething(action: () -> Unit) { action() }
Click to reveal answer
beginner
What is the syntax to call a function with a lambda as the last argument?
If the lambda is the last argument, you can put it outside the parentheses. Example: doSomething() { println("Hello") }
Click to reveal answer
intermediate
Explain the difference between passing a lambda and a regular function as a parameter.
A lambda is an anonymous function defined inline, while a regular function has a name and is defined separately. Both can be passed as parameters if the types match.
Click to reveal answer
beginner
What is the benefit of using lambdas when passing functions?
Lambdas make code concise and flexible. They allow you to write small pieces of behavior inline without creating separate named functions.
Click to reveal answer
How do you declare a function parameter that accepts a lambda with no parameters and no return value?
Afun example(action: (Int) -> Unit)
Bfun example(action: () -> Unit)
Cfun example(action: () -> Int)
Dfun example(action: Unit)
✗ Incorrect
The correct syntax for a lambda with no parameters and no return value is () -> Unit.
Which of these is the correct way to call a function with a lambda as the last argument?
AdoSomething({ println("Hi") })
BdoSomething { println("Hi") }
CAll of the above
DdoSomething() { println("Hi") }
✗ Incorrect
All these are valid ways to pass a lambda as the last argument in Kotlin.
What keyword is used to define a lambda expression in Kotlin?
ANo keyword, just curly braces {}
Bfun
Cdef
Dlambda
✗ Incorrect
Lambdas are defined using curly braces {} without a special keyword.
What does the 'it' keyword represent inside a lambda with one parameter?
AThe lambda's parameter
BThe function name
CThe return value
DThe class instance
✗ Incorrect
'it' is the implicit name for the single parameter in a lambda.
Why might you prefer passing a lambda instead of a named function?
ALambdas do not use memory
BLambdas are always faster
CNamed functions cannot be passed as parameters
DLambdas allow inline, concise code
✗ Incorrect
Lambdas let you write short code inline, making your code cleaner and easier to read.
Explain how to pass a lambda to a Kotlin function and call it inside the function.
Think about how you define the parameter and how you use it inside.
You got /3 concepts.
Describe the benefits of using lambdas when passing behavior to functions.
Why do programmers like lambdas for small tasks?
You got /4 concepts.
Practice
(1/5)
1. What is a lambda in Kotlin when passed to a function?
easy
A. A small block of code that can be passed and executed inside the function
B. A type of variable that stores numbers
C. A special kind of loop
D. A keyword to declare a class
Solution
Step 1: Understand what a lambda is
A lambda is a small piece of code that you can write inline and pass around like a value.
Step 2: Recognize its use in functions
Functions can accept lambdas to customize behavior without changing the function code.
Final Answer:
A small block of code that can be passed and executed inside the function -> Option A
Quick Check:
Lambda = small code block passed to function [OK]
Hint: Lambdas are code blocks you pass to functions [OK]
Common Mistakes:
Thinking lambda is a variable type
Confusing lambda with loops
Believing lambda is a keyword for classes
2. Which of the following is the correct syntax to pass a lambda to a function in Kotlin?
easy
A. fun greet(action: Unit -> ()) { action() } greet { println("Hi") }
B. fun greet(action: () -> Unit) { action() } greet { println("Hi") }
C. fun greet(action: () -> Unit) { action } greet { println("Hi") }
D. fun greet(action: () -> Unit) { action() } greet(println("Hi"))
Solution
Step 1: Check function parameter type
The function expects a lambda with no parameters and no return value: () -> Unit.
Step 2: Check how lambda is called and passed
Inside the function, calling action() executes the lambda. Passing greet { println("Hi") } is correct syntax.
Final Answer:
fun greet(action: () -> Unit) { action() } greet { println("Hi") } -> Option B
Hint: Use () -> Unit and call lambda with () inside function [OK]
Common Mistakes:
Wrong lambda type syntax
Forgetting to call lambda with ()
Passing lambda as function argument incorrectly
3. What will be the output of this Kotlin code?
fun operate(x: Int, action: (Int) -> Int): Int {
return action(x)
}
fun main() {
val result = operate(5) { it * 2 }
println(result)
}
medium
A. 5
B. 25
C. 10
D. Compilation error
Solution
Step 1: Understand the operate function
It takes an integer and a lambda that doubles the integer (it * 2).
Step 2: Calculate the result
Passing 5 to the lambda doubles it to 10, which is returned and printed.
Final Answer:
10 -> Option C
Quick Check:
5 * 2 = 10 [OK]
Hint: Trace lambda input and output carefully [OK]
Common Mistakes:
Confusing input and output values
Forgetting lambda parameter 'it'
Assuming no return from lambda
4. Identify the error in this Kotlin code snippet:
fun applyOperation(x: Int, op: (Int) -> Int) {
op(x)
}
fun main() {
applyOperation(3) { println(it * 3) }
}
medium
A. No error, code runs fine
B. The function applyOperation should return Int but returns Unit
C. The lambda syntax is incorrect
D. The lambda passed does not return a value but function expects Int return
Solution
Step 1: Check function signature and lambda
applyOperation expects a lambda returning Int, but the lambda only prints and returns Unit.
Step 2: Understand mismatch consequences
Because the lambda returns Unit, but function expects Int, this causes a type mismatch error.
Final Answer:
The lambda passed does not return a value but function expects Int return -> Option D
Quick Check:
Lambda return type mismatch = The lambda passed does not return a value but function expects Int return [OK]
Hint: Match lambda return type with function parameter type [OK]
Common Mistakes:
Ignoring return type mismatch
Thinking println returns Int
Assuming no return needed for lambdas
5. You want to write a Kotlin function filterAndTransform that takes a list of integers and two lambdas: one to filter the list and one to transform each filtered item. Which of these function signatures correctly allows passing both lambdas?
hard
A. fun filterAndTransform(list: List<Int>, filter: (Int) -> Boolean, transform: (Int) -> Int): List<Int>
B. fun filterAndTransform(list: List<Int>, filter: Int, transform: Int): List<Int>
C. fun filterAndTransform(list: List<Int>, filter: (Int) -> Int, transform: (Int) -> Boolean): List<Int>
D. fun filterAndTransform(list: List<Int>, filter: () -> Boolean, transform: () -> Int): List<Int>
Solution
Step 1: Identify correct lambda types for filtering and transforming
Filtering needs a lambda that takes Int and returns Boolean; transforming needs a lambda that takes Int and returns Int.
Step 2: Match function signature with these lambda types
fun filterAndTransform(list: List<Int>, filter: (Int) -> Boolean, transform: (Int) -> Int): List<Int> matches these types correctly; others have wrong parameter or return types.
Final Answer:
fun filterAndTransform(list: List<Int>, filter: (Int) -> Boolean, transform: (Int) -> Int): List<Int> -> Option A
Quick Check:
Filter returns Boolean, transform returns Int [OK]