The apply function executes a block of code on an object and returns the object itself. It is useful for initializing or configuring an object.
Click to reveal answer
intermediate
How is apply different from let in Kotlin?
apply returns the object it was called on, while let returns the result of the lambda expression. apply is used for object configuration, let for transformations.
Click to reveal answer
beginner
Show a simple example of using apply to initialize an object.
val person = Person().apply {
this.name = "Alice"
this.age = 30
}
// person is now initialized with name and age
Click to reveal answer
intermediate
Why is apply useful for builder-style code?
apply lets you write clean code by configuring an object inside a block without repeating the object name, improving readability and reducing boilerplate.
Click to reveal answer
intermediate
Can apply be used with nullable objects?
Yes, but you should use the safe call operator ?.apply to avoid null pointer exceptions. The block runs only if the object is not null.
Click to reveal answer
What does the Kotlin apply function return?
AThe object it was called on
BThe result of the lambda block
CA new object
DNull
✗ Incorrect
apply returns the original object after running the block, allowing chaining.
Which Kotlin function is best for configuring an object without repeating its name?
Alet
Brun
Capply
Dalso
✗ Incorrect
apply lets you configure an object inside a block where this refers to the object, so you don't repeat the name.
How do you safely use apply on a nullable object?
AUse <code>!!.apply</code>
BUse <code>?.apply</code>
CUse <code>apply</code> directly
DUse <code>let</code> instead
✗ Incorrect
Using ?.apply runs the block only if the object is not null, preventing errors.
Which of these is a typical use case for apply?
AInitializing an object
BTransforming a value
CFiltering a list
DMapping a collection
✗ Incorrect
apply is commonly used to initialize or configure objects.
What is the receiver object inside the apply block?
ANull
BA new object created inside the block
CThe lambda parameter
DThe object <code>apply</code> was called on
✗ Incorrect
Inside apply, this refers to the original object the function was called on.
Explain how the apply function works in Kotlin and give an example of when you would use it.
Think about configuring an object without repeating its name.
You got /4 concepts.
Describe the difference between apply and let in Kotlin and when to use each.
Focus on what each function returns and how you use the object inside.
You got /4 concepts.
Practice
(1/5)
1. What does the apply function do in Kotlin?
easy
A. Runs code on an object and returns the same object
B. Creates a new object and returns it
C. Runs code and returns the last expression result
D. Runs code without returning anything
Solution
Step 1: Understand the purpose of apply
The apply function executes a block of code on the object it is called on.
Step 2: Identify the return value of apply
It always returns the original object after applying the block, not a new value.
Final Answer:
Runs code on an object and returns the same object -> Option A
Quick Check:
apply returns the object itself [OK]
Hint: Remember: apply returns the original object after changes [OK]
Common Mistakes:
Thinking apply returns the last expression result
Confusing apply with let or run
Assuming apply creates a new object
2. Which of the following is the correct syntax to use apply on an object person to set its name property to "Alice"?
easy
A. person.apply { name = "Alice" }
B. apply(person) { name = "Alice" }
C. person.apply(name = "Alice")
D. person.apply { setName("Alice") }
Solution
Step 1: Identify the correct lambda syntax for apply
apply takes a lambda with receiver where this is the object, so properties can be set directly.
Step 2: Check each option's syntax
person.apply { name = "Alice" } correctly uses person.apply { name = "Alice" }. apply(person) { name = "Alice" } is invalid syntax. person.apply(name = "Alice") wrongly passes a parameter. person.apply { setName("Alice") } assumes a setter method which may not exist.
Final Answer:
person.apply { name = "Alice" } -> Option A
Quick Check:
Use object.apply { property = value } syntax [OK]
Hint: Use curly braces with apply to set properties inside [OK]
Common Mistakes:
Passing parameters directly to apply
Using parentheses instead of curly braces
Calling non-existent setter methods
3. What is the output of this Kotlin code?
val list = mutableListOf<Int>().apply {
add(1)
add(2)
add(3)
}
println(list)
medium
A. Compilation error
B. []
C. null
D. [1, 2, 3]
Solution
Step 1: Understand what apply does on the list
The apply block adds 1, 2, and 3 to the mutable list.
Step 2: Check the returned value of apply
apply returns the original list after adding the elements, so list contains [1, 2, 3].
Final Answer:
[1, 2, 3] -> Option D
Quick Check:
apply adds elements and returns the list [OK]
Hint: apply returns the object after running code inside [OK]
Common Mistakes:
Expecting apply to return last added element
Thinking list is empty after apply
Confusing apply with run or let
4. Identify the error in this Kotlin code using apply:
The apply block correctly adds two entries to the map.
Step 2: Understand the map.get("c") call
Since key "c" does not exist, get returns null, which is printed without error.
Final Answer:
No error; output is null -> Option C
Quick Check:
Accessing missing key returns null, no error [OK]
Hint: Missing keys in map.get return null, no crash [OK]
Common Mistakes:
Expecting runtime error for missing key
Thinking apply must return a value explicitly
Confusing map access syntax
5. You want to create and configure a StringBuilder in Kotlin to build the string "Hello World!" using apply. Which code snippet correctly does this?
hard
A. val result = StringBuilder().apply { append("Hello"); append(" World!") }
B. val result = StringBuilder().apply { append("Hello"); append(" World!") }.toString()
C. val result = StringBuilder().apply { append("Hello World!") }
D. val result = StringBuilder().apply { append("Hello"); append(" World!") }.toString
Solution
Step 1: Understand apply returns the object itself
The apply block configures the StringBuilder, but to get the string, toString() must be called after.
Step 2: Check each option's correctness
val result = StringBuilder().apply { append("Hello"); append(" World!") }.toString() calls toString() after apply, returning the built string. val result = StringBuilder().apply { append("Hello World!") } returns the StringBuilder object, not the string. val result = StringBuilder().apply { append("Hello"); append(" World!") } misses toString(). val result = StringBuilder().apply { append("Hello"); append(" World!") }.toString misses parentheses on toString, causing error.
Final Answer:
val result = StringBuilder().apply { append("Hello"); append(" World!") }.toString() -> Option B
Quick Check:
Call toString() after apply to get string [OK]
Hint: Call toString() after apply to get final string [OK]
Common Mistakes:
Forgetting to call toString() after apply
Missing parentheses on toString
Expecting apply to return string automatically
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.