📖 Scenario: You are working on a simple Kotlin program that processes a list of numbers. You want to use a lambda function to double each number in the list.
🎯 Goal: Build a Kotlin program that uses a lambda expression to double each number in a list and then prints the doubled numbers.
📋 What You'll Learn
Create a list of integers with exact values
Declare a lambda expression that doubles a number
Use the lambda to transform the list
Print the resulting list
💡 Why This Matters
🌍 Real World
Lambdas are used in Kotlin to write short, reusable pieces of code for tasks like transforming lists, handling events, or processing data streams.
💼 Career
Understanding lambda syntax is essential for Kotlin developers working on Android apps or backend services, as it helps write clean and efficient code.
Progress0 / 4 steps
1
Create the initial list of numbers
Create a list of integers called numbers with these exact values: 1, 2, 3, 4, 5
Kotlin
Hint
Use val numbers = listOf(1, 2, 3, 4, 5) to create the list.
2
Declare a lambda expression to double a number
Declare a lambda expression called double that takes an integer n and returns n * 2
Kotlin
Hint
Use val double: (Int) -> Int = { n -> n * 2 } to declare the lambda.
3
Use the lambda to transform the list
Create a new list called doubledNumbers by applying the double lambda to each element in numbers using map
Kotlin
Hint
Use val doubledNumbers = numbers.map(double) to apply the lambda.
4
Print the doubled numbers
Print the doubledNumbers list using println
Kotlin
Hint
Use println(doubledNumbers) to display the doubled list.
Practice
(1/5)
1. What is a lambda expression in Kotlin?
easy
A. A small unnamed function stored in a variable
B. A class declaration
C. A type of loop
D. A way to declare variables
Solution
Step 1: Understand lambda basics
Lambdas are small functions without a name that can be stored in variables.
Step 2: Compare with other options
Classes, loops, and variable declarations are different concepts from lambdas.
Final Answer:
A small unnamed function stored in a variable -> Option A
Quick Check:
Lambda = unnamed function [OK]
Hint: Lambdas are unnamed functions in curly braces [OK]
Common Mistakes:
Confusing lambdas with classes
Thinking lambdas are loops
Mixing lambdas with variable declarations
2. Which of the following is the correct syntax for a lambda that takes two Ints and returns their sum?
easy
A. { a, b : Int -> a + b }
B. (a, b) -> { a + b }
C. fun(a, b) { return a + b }
D. { a, b -> a + b }
Solution
Step 1: Recall lambda syntax
Lambdas use curly braces with parameters before an arrow, then the body: { params -> body }
Step 2: Check each option
{ a, b -> a + b } matches correct syntax. (a, b) -> { a + b } wrongly uses parentheses outside braces. fun(a, b) { return a + b } is a function, not a lambda. { a, b : Int -> a + b } incorrectly places type annotation.
Final Answer:
{ a, b -> a + b } -> Option D
Quick Check:
Correct lambda syntax = { params -> body } [OK]
Hint: Lambdas use braces with arrow separating params and body [OK]
Common Mistakes:
Using parentheses instead of braces
Trying to write full function syntax
Incorrect type annotations inside lambda
3. What is the output of this Kotlin code?
val multiply = { x: Int, y: Int -> x * y }
println(multiply(3, 4))
medium
A. 12
B. 7
C. 34
D. Error
Solution
Step 1: Understand the lambda function
The lambda takes two Ints x and y, and returns their product x * y.
Step 2: Calculate the output
Calling multiply(3, 4) returns 3 * 4 = 12.
Final Answer:
12 -> Option A
Quick Check:
3 * 4 = 12 [OK]
Hint: Multiply parameters inside lambda to get output [OK]
Common Mistakes:
Adding instead of multiplying
Concatenating numbers as strings
Syntax errors in lambda call
4. Identify the error in this Kotlin lambda declaration:
val greet = { name String -> "Hello, $name" }
medium
A. Lambda body must be outside braces
B. Arrow is missing after parameters
C. Missing colon between parameter and type
D. Cannot use string interpolation in lambda
Solution
Step 1: Check parameter syntax
Parameters must have a colon between name and type: name: String
Step 2: Verify lambda structure
The arrow -> is present after parameters, and string interpolation is allowed inside lambdas.
Final Answer:
Missing colon between parameter and type -> Option C
Quick Check:
Parameter syntax = name: Type [OK]
Hint: Use colon between param name and type in lambdas [OK]
Common Mistakes:
Omitting colon in parameter declaration
Forgetting arrow after parameters
Thinking string interpolation is disallowed
5. How can you declare a lambda in Kotlin that filters a list of integers to keep only even numbers?
hard
A. val evenFilter = { list: List<Int> -> list.filter(it % 2 == 0) }
B. val evenFilter = { list: List<Int> -> list.filter { it % 2 == 0 } }
C. val evenFilter = { list: List<Int> -> list.filter { x -> x / 2 == 0 } }
D. val evenFilter = { list: List<Int> -> list.filter { x -> x % 2 = 0 } }
Solution
Step 1: Understand filter usage
filter takes a lambda returning true for elements to keep. Correct condition is x % 2 == 0 for even numbers.
Step 2: Check each option
val evenFilter = { list: List<Int> -> list.filter { it % 2 == 0 } } correctly uses filter with lambda and modulus check. val evenFilter = { list: List<Int> -> list.filter(it % 2 == 0) } misses braces for lambda. val evenFilter = { list: List<Int> -> list.filter { x -> x / 2 == 0 } } uses division instead of modulus. val evenFilter = { list: List<Int> -> list.filter { x -> x % 2 = 0 } } uses assignment (=) instead of comparison (==).
Final Answer:
val evenFilter = { list: List<Int> -> list.filter { it % 2 == 0 } } -> Option B
Quick Check:
Filter with { it % 2 == 0 } keeps evens [OK]
Hint: Use filter { it % 2 == 0 } to select even numbers [OK]
Common Mistakes:
Using assignment (=) instead of comparison (==)
Using division (/) instead of modulus (%)
Omitting braces around lambda in filter
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.