Bird
Raised Fist0
Kotlinprogramming~20 mins

Let function with safe calls in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Kotlin Let Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of let with safe call on nullable String
What is the output of this Kotlin code snippet?
Kotlin
val name: String? = "Anna"
val result = name?.let { it.uppercase() } ?: "No name"
println(result)
AANNA
BNo name
Canna
Dnull
Attempts:
2 left
💡 Hint
Remember that let runs only if the value is not null and uppercase converts to capital letters.
❓ Predict Output
intermediate
2:00remaining
Result of let with null value and safe call
What will be printed by this Kotlin code?
Kotlin
val number: Int? = null
val output = number?.let { it * 2 } ?: -1
println(output)
AException
B-1
Cnull
D0
Attempts:
2 left
💡 Hint
If the variable is null, let block does not run and the Elvis operator ?: provides the default.
🔧 Debug
advanced
2:00remaining
Identify the error in let with safe call
This Kotlin code is intended to print the length of a nullable string if it is not null. What error will it produce?
Kotlin
val text: String? = null
val length = text.let { it.length }
println(length)
APrints 0
BNullPointerException
CCompilation error: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver
DPrints null
Attempts:
2 left
💡 Hint
Check how let is called on a nullable variable without safe call operator.
❓ Predict Output
advanced
2:00remaining
Output of nested let with safe calls
What is the output of this Kotlin code?
Kotlin
val a: String? = "Hi"
val b: String? = null
val result = a?.let { x -> b?.let { y -> x + y } } ?: "Empty"
println(result)
AEmpty
BHi
CHinull
Dnull
Attempts:
2 left
💡 Hint
The inner let runs only if b is not null. If b is null, the whole expression after ?: is used.
❓ Predict Output
expert
2:00remaining
Value of variable after let with safe call and side effect
Consider this Kotlin code. What is the final value of the variable 'counter' after execution?
Kotlin
var counter = 0
var text: String? = "abc"
text?.let {
    counter += it.length
}
text = null
text?.let {
    counter += it.length
}
println(counter)
ACompilation error
B0
C6
D3
Attempts:
2 left
💡 Hint
The let block runs only when the variable is not null. The second let does not run because text is null.

Practice

(1/5)
1. What does the Kotlin expression nullableVar?.let { println(it) } do?
easy
A. Prints the value of nullableVar only if it is not null.
B. Always prints null regardless of nullableVar.
C. Throws a NullPointerException if nullableVar is null.
D. Assigns nullableVar to it without printing.

Solution

  1. Step 1: Understand safe call operator usage

    The ?. operator checks if nullableVar is not null before proceeding.
  2. Step 2: Analyze the let function behavior

    If nullableVar is not null, let executes the lambda, printing the value.
  3. Final Answer:

    Prints the value of nullableVar only if it is not null. -> Option A
  4. Quick Check:

    ?.let runs code only if not null [OK]
Hint: Remember: ?.let runs code only when value is not null [OK]
Common Mistakes:
  • Thinking it prints null when variable is null
  • Assuming it throws an exception on null
  • Confusing let with always running code
2. Which of the following is the correct syntax to safely print a nullable string name using let?
easy
A. name?.let { println(it) }
B. name.let { println(it) }
C. name?.let println(it)
D. name?.let { println(name) }

Solution

  1. Step 1: Identify safe call usage

    To avoid null errors, ?.let must be used, not just .let.
  2. Step 2: Check lambda syntax correctness

    The lambda must be enclosed in braces { } and use it to refer to the value.
  3. Final Answer:

    name?.let { println(it) } -> Option A
  4. Quick Check:

    Safe call + let with braces = correct syntax [OK]
Hint: Use ?.let { } with braces and 'it' inside [OK]
Common Mistakes:
  • Omitting the safe call operator (?.)
  • Missing braces around lambda
  • Using variable name inside lambda instead of 'it'
3. What is the output of this Kotlin code?
val number: Int? = 5
number?.let { println(it * 2) }
medium
A. No output
B. 10
C. null
D. 5

Solution

  1. Step 1: Check if number is null

    The variable number holds 5, which is not null, so ?.let runs.
  2. Step 2: Calculate inside let block

    The lambda multiplies it (5) by 2 and prints 10.
  3. Final Answer:

    10 -> Option B
  4. Quick Check:

    Non-null value runs let, prints doubled value [OK]
Hint: If variable not null, let runs and prints result [OK]
Common Mistakes:
  • Expecting no output if value is not null
  • Confusing printed value with original variable
  • Thinking it prints null when variable is non-null
4. Identify the error in this Kotlin code snippet:
val text: String? = null
text.let { println(it.length) }
medium
A. It prints 0 because null is treated as empty string.
B. It compiles but does not print anything.
C. It throws NullPointerException because safe call is missing.
D. It prints 'null' as a string.

Solution

  1. Step 1: Check safe call usage

    The code uses text.let without ?., so it runs even if text is null.
  2. Step 2: Understand null dereference

    Inside the lambda, it.length is called on null, causing a NullPointerException.
  3. Final Answer:

    It throws NullPointerException because safe call is missing. -> Option C
  4. Quick Check:

    Missing ?. causes null error [OK]
Hint: Always use ?.let to avoid null errors [OK]
Common Mistakes:
  • Assuming let skips null without safe call
  • Thinking null acts like empty string
  • Ignoring possibility of NullPointerException
5. Given a nullable list of strings val names: List<String>? = listOf("Anna", "Bob", null, "Cara"), which Kotlin code safely prints only non-null names using let with safe calls?
hard
A. names?.let { it.forEach { println(it) } }
B. names.forEach { it.let { println(it) } }
C. names?.forEach { println(it) }
D. names?.forEach { it?.let { println(it) } }

Solution

  1. Step 1: Handle nullable list safely

    Use names?.forEach to avoid errors if names is null.
  2. Step 2: Filter out null elements inside the list

    Inside the loop, use it?.let to print only non-null names.
  3. Final Answer:

    names?.forEach { it?.let { println(it) } } -> Option D
  4. Quick Check:

    Safe calls on list and elements print only non-null [OK]
Hint: Use ?.forEach and it?.let to skip nulls safely [OK]
Common Mistakes:
  • Not using safe call on list causing errors
  • Printing null elements without filtering
  • Using let without safe call on nullable elements
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