Bird
Raised Fist0
Kotlinprogramming~10 mins

Let function behavior and use cases in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to use the let function to print the length of the string.

Kotlin
val name: String? = "Kotlin"
name?.[1] {
    println("Length: ${it.length}")
}
Drag options to blanks, or click blank then click option'
Alet
Brun
Capply
Dalso
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'run' instead of 'let' which doesn't pass the object as 'it' in this context.
Using 'apply' which uses 'this' instead of 'it'.
Using 'also' which returns the original object but is less common for this use case.
2fill in blank
medium

Complete the code to safely convert a nullable string to uppercase using let.

Kotlin
val input: String? = "hello"
val result = input?.[1] {
    it.uppercase()
} ?: "DEFAULT"
Drag options to blanks, or click blank then click option'
Aalso
Blet
Cwith
Drun
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'also' which returns the original object, not the block result.
Using 'run' without safe call operator, which can cause null pointer exceptions.
Using 'with' which is not an extension function and requires the object as argument.
3fill in blank
hard

Fix the error in the code by choosing the correct function to chain calls and return the last expression.

Kotlin
val number = 5
val result = number.[1] {
    println("Number is $it")
    it * 2
}
println(result)
Drag options to blanks, or click blank then click option'
Aapply
Brun
Calso
Dlet
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'also' which returns the original object, so result would be 5, not 10.
Using 'apply' which uses 'this' and returns the original object.
Using 'run' which uses 'this' and is not called as extension here.
4fill in blank
hard

Fill both blanks to create a map of words to their lengths, but only include words longer than 3 characters.

Kotlin
val words = listOf("cat", "house", "dog", "elephant")
val lengths = words.associateWith { it.[1] }
    .filter { it.value [2] 3 }
Drag options to blanks, or click blank then click option'
Alength
Bcount
C>
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'count' instead of 'length'; 'count' requires a predicate and does not return total length.
Using '<' instead of '>' which would filter shorter words instead.
Using 'count' without parentheses which is a function.
5fill in blank
hard

Fill all three blanks to create a map of uppercase words to their lengths, including only words longer than 4 characters.

Kotlin
val words = listOf("apple", "bat", "carrot", "dog")
val result = words.filter { it.length [1] 4 }
    .associateBy({ it.[2]() }, { it.[3] })
Drag options to blanks, or click blank then click option'
A>
Buppercase
Clength
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' in filter condition.
Using 'lowercase' instead of 'uppercase' for keys.
Using 'length' without parentheses if it was a function (it's a property).

Practice

(1/5)
1. What does the Kotlin let function primarily do when called on an object?
easy
A. Creates a new object identical to the original
B. Executes a block of code with the object as its argument and returns the block's result
C. Deletes the object after running the block
D. Converts the object to a string representation

Solution

  1. Step 1: Understand the purpose of let

    The let function takes the object it is called on and passes it as an argument to a block of code.
  2. Step 2: Identify the return value of let

    The result of the block inside let is returned as the final value of the let call.
  3. Final Answer:

    Executes a block of code with the object as its argument and returns the block's result -> Option B
  4. Quick Check:

    let runs block and returns result [OK]
Hint: Remember: let runs code and returns block result [OK]
Common Mistakes:
  • Thinking let creates a new object
  • Assuming let deletes the object
  • Confusing let with toString conversion
2. Which of the following is the correct syntax to use let on a nullable variable name to print it only if it's not null?
easy
A. name?.let { println(it) }
B. let(name) { println(it) }
C. name.let { println(it) }
D. name.let? { println(it) }

Solution

  1. Step 1: Recognize nullable safe call usage

    To safely call let only when name is not null, use the safe call operator ?..
  2. Step 2: Check syntax correctness

    name?.let { println(it) } runs the block only if name is not null, printing the value.
  3. Final Answer:

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

    Safe call with let = name?.let { ... } [OK]
Hint: Use ?.let to run code only if variable is not null [OK]
Common Mistakes:
  • Using let without safe call on nullable variable
  • Incorrect syntax like let(name) or let? after variable
  • Forgetting the safe call operator
3. What is the output of the following Kotlin code?
val number = 5
val result = number.let { it * 2 }
println(result)
medium
A. 10
B. 5
C. it * 2
D. Compilation error

Solution

  1. Step 1: Understand the let block execution

    The variable number is 5. The let block multiplies it (which is 5) by 2.
  2. Step 2: Calculate the result and print

    The expression it * 2 evaluates to 10, which is assigned to result and printed.
  3. Final Answer:

    10 -> Option A
  4. Quick Check:

    5 * 2 = 10 [OK]
Hint: let returns block result, so 5 * 2 = 10 [OK]
Common Mistakes:
  • Thinking let returns original object
  • Confusing it with string output
  • Expecting syntax error due to block
4. Identify the error in this Kotlin code snippet using let:
val text: String? = null
text.let { println(it.length) }
medium
A. Prints 'null' string
B. No error, prints 0
C. Compilation error due to missing safe call
D. NullPointerException at runtime

Solution

  1. Step 1: Analyze nullable variable usage

    The variable text is nullable and assigned null. Calling let directly runs the block even if text is null.
  2. Step 2: Understand runtime behavior

    Inside the block, it.length is accessed. Since it is null, this causes a NullPointerException at runtime.
  3. Final Answer:

    NullPointerException at runtime -> Option D
  4. Quick Check:

    Accessing length on null causes runtime error [OK]
Hint: Use ?.let to avoid null pointer errors [OK]
Common Mistakes:
  • Assuming let skips block if null without safe call
  • Expecting compile error instead of runtime error
  • Thinking it prints 'null' string
5. Given a nullable list of integers val numbers: List<Int>? = listOf(1, 2, 3), how can you use let to safely calculate and print the sum only if the list is not null and not empty?
hard
A. numbers.let { println(it.sum()) }
B. numbers.let { if (it.isNotEmpty()) println(it.sum()) }
C. numbers?.let { if (it.isNotEmpty()) println(it.sum()) }
D. numbers?.let { println(it.sum()) }

Solution

  1. Step 1: Use safe call to handle null list

    Since numbers is nullable, use ?.let to run code only if it's not null.
  2. Step 2: Check for empty list inside let block

    Inside the block, check it.isNotEmpty() to ensure the list has elements before summing.
  3. Step 3: Print sum only if conditions met

    If the list is not empty, print the sum using println(it.sum()).
  4. Final Answer:

    numbers?.let { if (it.isNotEmpty()) println(it.sum()) } -> Option C
  5. Quick Check:

    Safe call + empty check + sum print = numbers?.let { if (it.isNotEmpty()) println(it.sum()) } [OK]
Hint: Combine ?.let with isNotEmpty() check inside block [OK]
Common Mistakes:
  • Not using safe call on nullable list
  • Skipping empty check causing wrong output
  • Using let without safe call causing runtime error
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