Bird
Raised Fist0
Kotlinprogramming~20 mins

Run function behavior and use cases in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Run Function Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Kotlin code using run?
Consider the following Kotlin code snippet using the run function. What will be printed when this code runs?
Kotlin
val result = run {
    val x = 10
    val y = 20
    x + y
}
println(result)
ACompilation error
B20
C30
D10
Attempts:
2 left
💡 Hint
Remember that run executes the block and returns the last expression.
❓ Predict Output
intermediate
2:00remaining
What does this run block return?
Look at this Kotlin code using run. What is the value of output after running this?
Kotlin
val output = "Hello".run {
    println(this)
    this.length
}
println(output)
ACompilation error
BHello\n5
C5
DHello\nHello
Attempts:
2 left
💡 Hint
The run block returns the last expression's value, but println prints to console.
🧠 Conceptual
advanced
1:30remaining
Which statement about Kotlin's run function is true?
Choose the correct statement about the behavior of Kotlin's run function.
A<code>run</code> is a keyword and cannot be used as a function.
B<code>run</code> can only be used with nullable types.
C<code>run</code> modifies the receiver object permanently.
D<code>run</code> executes a block and returns the last expression's value.
Attempts:
2 left
💡 Hint
Think about what run returns after executing the block.
🔧 Debug
advanced
2:00remaining
What error does this Kotlin code cause?
Examine this Kotlin code using run. What error will it produce when compiled or run?
Kotlin
val number = 5
val result = number.run {
    val number = "ten"
    number.length
}
println(result)
APrints 3
BPrints 5
CCompilation error due to variable shadowing
DRuntime NullPointerException
Attempts:
2 left
💡 Hint
Check how variable shadowing works inside the run block.
🚀 Application
expert
2:30remaining
How many items are in the map created by this run block?
What is the number of entries in the map returned by this Kotlin run block?
Kotlin
val map = run {
    val tempMap = mutableMapOf<Int, String>()
    tempMap[1] = "one"
    tempMap[2] = "two"
    tempMap[3] = "three"
    tempMap
}
println(map.size)
A3
B0
C1
DCompilation error
Attempts:
2 left
💡 Hint
The run block returns the map after adding three entries.

Practice

(1/5)
1. What does the Kotlin run function do when called without an object?
easy
A. Creates a new thread to run the block asynchronously
B. Delays the execution of the block until explicitly called
C. Executes the given block and returns the last expression's value
D. Throws an exception if the block contains no return statement

Solution

  1. Step 1: Understand run without receiver

    When run is called without an object, it simply executes the block of code inside it.
  2. Step 2: Identify the return value

    The function returns the value of the last expression inside the block.
  3. Final Answer:

    Executes the given block and returns the last expression's value -> Option C
  4. Quick Check:

    run without object returns last expression [OK]
Hint: run returns last expression value in its block [OK]
Common Mistakes:
  • Thinking run creates a new thread
  • Assuming run delays execution
  • Believing run throws error without explicit return
2. Which of the following is the correct syntax to use run with an object in Kotlin?
easy
A. val result = run.obj { property + 1 }
B. val result = obj.run { this.property + 1 }
C. val result = run { obj.property + 1 }
D. val result = obj.run() { property + 1 }

Solution

  1. Step 1: Identify correct run usage with receiver

    The run function is called as an extension on the object: obj.run { ... }.
  2. Step 2: Check syntax correctness

    val result = obj.run { this.property + 1 } correctly uses obj.run { this.property + 1 } without extra parentheses or misplaced dots.
  3. Final Answer:

    val result = obj.run { this.property + 1 } -> Option B
  4. Quick Check:

    run called as extension function on object [OK]
Hint: run is called as extension: obj.run { ... } [OK]
Common Mistakes:
  • Using dot after run like run.obj
  • Adding empty parentheses after run
  • Calling run without object but expecting receiver
3. What is the output of this Kotlin code?
val result = run {
    val x = 5
    val y = 10
    x + y
}
println(result)
medium
A. Compilation error
B. 510
C. null
D. 15

Solution

  1. Step 1: Execute the run block

    The block declares x = 5 and y = 10, then returns x + y which is 15.
  2. Step 2: Print the result

    The variable result holds 15, so println(result) outputs 15.
  3. Final Answer:

    15 -> Option D
  4. Quick Check:

    run returns last expression value 15 [OK]
Hint: run returns last expression value inside block [OK]
Common Mistakes:
  • Concatenating numbers as strings
  • Expecting null because no explicit return
  • Thinking run causes compilation error
4. Identify the error in this Kotlin code using run:
val text = "Hello"
val length = text.run {
    val len = length
}
println(length)
medium
A. The run block does not return a value, so length is assigned Unit
B. The variable len is not accessible outside run block
C. The property length is undefined for String
D. The run function cannot be called on a String

Solution

  1. Step 1: Analyze run block return

    The run block declares val len = length but does not return any expression explicitly, so it returns Unit.
  2. Step 2: Check assignment to length variable

    Variable length is assigned the result of run, which is Unit, not the integer length of the string.
  3. Final Answer:

    The run block does not return a value, so length is assigned Unit -> Option A
  4. Quick Check:

    run returns last expression; no explicit return means Unit [OK]
Hint: run returns last expression; no explicit return means Unit [OK]
Common Mistakes:
  • Assuming len is returned automatically
  • Confusing property length with variable
  • Thinking run cannot be called on String
5. Given a list of nullable integers val numbers = listOf(1, null, 3, null, 5), how can you use run to compute the sum of non-null values safely in Kotlin?
hard
A. val sum = numbers.run { filterNotNull().sum() }
B. val sum = run(numbers) { filterNotNull().sum() }
C. val sum = numbers.run { sum() }
D. val sum = run { filterNotNull().sum() }

Solution

  1. Step 1: Use run as extension on list

    Calling numbers.run { ... } lets you access list functions directly inside the block.
  2. Step 2: Filter non-null and sum

    Inside the block, filterNotNull() removes nulls, then sum() adds remaining numbers.
  3. Final Answer:

    val sum = numbers.run { filterNotNull().sum() } -> Option A
  4. Quick Check:

    run with receiver simplifies code, returns last expression [OK]
Hint: Use run as extension to chain calls on object [OK]
Common Mistakes:
  • Passing list as argument to run incorrectly
  • Calling sum() without filtering nulls
  • Using run without receiver and accessing list members directly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard