Bird
Raised Fist0
Kotlinprogramming~5 mins

Testing scope functions and lambdas in Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a scope function in Kotlin?
A scope function is a Kotlin function that executes a block of code within the context of an object, allowing you to access the object without repeating its name.
Click to reveal answer
beginner
Name four common Kotlin scope functions.
The four common Kotlin scope functions are: let, run, with, and apply.
Click to reveal answer
beginner
How does the 'let' scope function pass the object to the lambda?
'let' passes the object as a parameter named 'it' to the lambda, allowing you to use 'it' inside the block.
Click to reveal answer
intermediate
What is the difference between 'apply' and 'run' in Kotlin scope functions?
'apply' returns the object itself and uses 'this' as the context inside the lambda, while 'run' returns the lambda result and also uses 'this' as the context.
Click to reveal answer
intermediate
Why are lambdas useful in testing Kotlin scope functions?
Lambdas let you write concise blocks of code to test behavior inside scope functions, making it easy to check how the object is accessed and modified.
Click to reveal answer
Which Kotlin scope function passes the object as 'it' to the lambda?
Arun
Bapply
Clet
Dwith
What does the 'apply' scope function return?
AThe lambda result
BThe original object
CA Boolean
DNull
Which scope function is best when you want to configure an object and return it?
Aapply
Blet
Crun
Dalso
In Kotlin, what is a lambda?
AA block of code that can be passed around and executed
BA named function
CA variable type
DA class
Which scope function returns the result of the lambda instead of the object?
Awith
Balso
Capply
Drun
Explain how you would test a Kotlin scope function using a lambda.
Think about how the scope function passes the object and what you want to verify inside the lambda.
You got /4 concepts.
    Describe the differences between 'let', 'apply', and 'run' in Kotlin scope functions.
    Focus on how each function passes the object and what it returns.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which Kotlin scope function returns the object it was called on after executing the given lambda?
      easy
      A. run
      B. also
      C. let
      D. apply

      Solution

      1. Step 1: Understand scope function behavior

        The also function executes the lambda with the object as it and returns the original object.
      2. Step 2: Compare with other functions

        let returns the lambda result, run returns lambda result, apply returns the object but uses this inside lambda.
      3. Final Answer:

        also -> Option B
      4. Quick Check:

        Returns original object after lambda = also [OK]
      Hint: Remember: also returns object, let returns lambda result [OK]
      Common Mistakes:
      • Confusing 'also' with 'let' return values
      • Mixing 'apply' and 'also' usage
      • Assuming 'run' returns the object
      2. Which of the following is the correct syntax to use the let scope function on a nullable variable name?
      easy
      A. name?.let { println(it) }
      B. name.let { println(it) }
      C. let(name) { println(it) }
      D. name?.let println(it)

      Solution

      1. Step 1: Check nullable safe call usage

        To safely call let on a nullable variable, use the safe call operator ?..
      2. Step 2: Validate lambda syntax

        The lambda must be enclosed in braces {} and use it as the implicit parameter.
      3. Final Answer:

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

        Safe call with lambda braces = name?.let { println(it) } [OK]
      Hint: Use ?.let { } for nullable variables to avoid errors [OK]
      Common Mistakes:
      • Omitting safe call operator on nullable
      • Incorrect lambda syntax without braces
      • Trying to call let as a standalone function
      3. What is the output of this Kotlin code?
      val result = "hello".run {
          println(this.uppercase())
          this.length
      }
      println(result)
      medium
      A. 5 HELLO
      B. hello 5
      C. HELLO hello
      D. HELLO 5

      Solution

      1. Step 1: Understand run behavior

        The run function executes the lambda with this as the receiver and returns the lambda's last expression.
      2. Step 2: Trace the code execution

        Inside lambda, println(this.uppercase()) prints "HELLO". Then this.length returns 5, assigned to result. Finally, println(result) prints 5.
      3. Final Answer:

        HELLO 5 -> Option D
      4. Quick Check:

        run prints uppercase then returns length = HELLO and 5 [OK]
      Hint: run returns last lambda value; println outputs immediately [OK]
      Common Mistakes:
      • Assuming run returns the printed string
      • Confusing this with it inside lambda
      • Mixing order of printed lines
      4. Identify the error in this Kotlin code snippet:
      val numbers = listOf(1, 2, 3)
      numbers.also {
          it.add(4)
      }
      println(numbers)
      medium
      A. Missing lambda parameter name
      B. also does not return the list
      C. Cannot call add on immutable list
      D. Syntax error in lambda

      Solution

      1. Step 1: Check list mutability

        listOf creates an immutable list; calling add is not allowed.
      2. Step 2: Understand scope function effect

        also runs the lambda but does not change immutability; trying to add causes a runtime error.
      3. Final Answer:

        Cannot call add on immutable list -> Option C
      4. Quick Check:

        Immutable list blocks add() method = Cannot call add on immutable list [OK]
      Hint: listOf creates immutable list; use mutableListOf to add [OK]
      Common Mistakes:
      • Assuming also changes list mutability
      • Ignoring immutable list restrictions
      • Thinking lambda syntax is wrong
      5. Given a list of nullable integers val nums = listOf(1, null, 3, null, 5), which code snippet correctly uses scope functions and lambdas to create a list of doubled non-null values?
      hard
      A. nums.filterNotNull().map { it * 2 }
      B. nums.map { it * 2 }.filterNotNull()
      C. nums.also { it.map { it * 2 } }
      D. nums.run { map { it!! * 2 } }

      Solution

      1. Step 1: Remove nulls before mapping

        Use filterNotNull() to exclude null values safely.
      2. Step 2: Map remaining values to double

        Apply map { it * 2 } on non-null list to double each integer.
      3. Final Answer:

        nums.filterNotNull().map { it * 2 } -> Option A
      4. Quick Check:

        Filter nulls then map doubling = nums.filterNotNull().map { it * 2 } [OK]
      Hint: Filter nulls first, then map to avoid null errors [OK]
      Common Mistakes:
      • Mapping before filtering nulls causes null results
      • Using unsafe !! operator risking exceptions
      • Misusing also or run without returning correct list
      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