Bird
Raised Fist0
Kotlinprogramming~5 mins

This vs it receiver difference in Kotlin - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What does the this keyword refer to in Kotlin lambdas?
<p><code>this</code> refers to the instance of the class where the lambda is defined, not the lambda itself.</p>
Click to reveal answer
beginner
What is the role of it in Kotlin lambdas?

it is the implicit name of the single parameter passed to a lambda when no explicit name is given.

Click to reveal answer
intermediate
How does this differ from it in Kotlin lambda expressions?
<p><code>this</code> refers to the outer class or receiver object, while <code>it</code> refers to the lambda's single input parameter.</p>
Click to reveal answer
beginner
In Kotlin, when do you use it instead of naming the lambda parameter?

When the lambda has exactly one parameter and you don't explicitly name it, Kotlin uses it as the default name.

Click to reveal answer
intermediate
Can this be used inside a lambda to refer to the lambda itself?
<p>No, <code>this</code> always refers to the outer receiver or class instance, not the lambda. To refer to the lambda parameter, use <code>it</code> or name it explicitly.</p>
Click to reveal answer
In a Kotlin lambda with one parameter, what does it represent?
AThe single parameter passed to the lambda
BThe outer class instance
CThe lambda itself
DA keyword to refer to the receiver object
What does this refer to inside a Kotlin lambda expression?
AThe lambda's single parameter
BA local variable inside the lambda
CThe lambda itself
DThe outer class or receiver object
If you want to refer to the lambda's parameter explicitly, what should you do?
AUse <code>it</code> or name the parameter explicitly
BUse <code>self</code>
CUse <code>this</code>
DUse <code>lambda</code>
Which keyword refers to the instance of the class where the lambda is defined?
Ait
Bthis
Cself
Dlambda
When is it NOT available in a Kotlin lambda?
AWhen the lambda has exactly one parameter
BWhen the lambda is inside a class
CWhen the lambda has no parameters
DWhen <code>this</code> is used
Explain the difference between this and it in Kotlin lambdas.
Think about what each keyword points to inside and outside the lambda.
You got /4 concepts.
    When should you use it and when should you use this inside Kotlin lambda expressions?
    Consider the context of the lambda and the class it is in.
    You got /4 concepts.

      Practice

      (1/5)
      1. In Kotlin, what does this refer to inside a class method?
      easy
      A. The current instance of the class
      B. The first parameter of a lambda
      C. A global variable
      D. A static method

      Solution

      1. Step 1: Understand this in class context

        Inside a class method, this refers to the current object instance that called the method.
      2. Step 2: Differentiate from lambda parameter

        this is not a lambda parameter; that role is usually played by it in single-parameter lambdas.
      3. Final Answer:

        The current instance of the class -> Option A
      4. Quick Check:

        this in class = current object [OK]
      Hint: Remember: this means current object in classes [OK]
      Common Mistakes:
      • Confusing this with lambda parameter it
      • Thinking this is a global variable
      • Assuming this refers to static context
      2. Which of the following is the correct way to refer to the implicit lambda parameter in Kotlin when there is only one parameter?
      easy
      A. this
      B. it
      C. self
      D. lambda

      Solution

      1. Step 1: Identify default lambda parameter

        In Kotlin, when a lambda has a single parameter and no explicit name, it is referred to as it.
      2. Step 2: Confirm this is not used here

        this refers to the receiver object, not the lambda parameter.
      3. Final Answer:

        it -> Option B
      4. Quick Check:

        Single lambda parameter = it [OK]
      Hint: Single lambda parameter? Use it [OK]
      Common Mistakes:
      • Using this instead of it in lambdas
      • Trying to name the parameter without declaration
      • Assuming self is valid in Kotlin
      3. What will be the output of the following Kotlin code?
      class Box(val value: Int) {
          fun printValue() {
              listOf(1).forEach {
                  println(this.value + it)
              }
          }
      }
      
      fun main() {
          Box(5).printValue()
      }
      medium
      A. 6
      B. 1
      C. 5
      D. Compilation error

      Solution

      1. Step 1: Understand this inside lambda with receiver

        Inside printValue, this refers to the Box instance, so this.value is 5.
      2. Step 2: Calculate the sum inside lambda

        The lambda parameter it is 1 from the list. So, this.value + it = 5 + 1 = 6.
      3. Final Answer:

        6 -> Option A
      4. Quick Check:

        this.value + it = 6 [OK]
      Hint: Inside lambda, this is outer object, it is lambda param [OK]
      Common Mistakes:
      • Thinking this refers to lambda receiver
      • Confusing it with this
      • Expecting compilation error due to this usage
      4. Identify the error in the following Kotlin code snippet:
      fun main() {
          val numbers = listOf(1, 2, 3)
          numbers.forEach {
              println(this + it)
          }
      }
      medium
      A. Missing lambda parameter name
      B. Incorrect list declaration
      C. Using this inside lambda without receiver causes error
      D. No error, code runs fine

      Solution

      1. Step 1: Check this usage inside lambda

        In this lambda, there is no receiver object, so this is not defined and causes an error.
      2. Step 2: Confirm lambda parameter usage

        it is valid as the lambda parameter, but this cannot be used without a receiver context.
      3. Final Answer:

        Using this inside lambda without receiver causes error -> Option C
      4. Quick Check:

        this needs receiver, else error [OK]
      Hint: No receiver? Don't use this inside lambda [OK]
      Common Mistakes:
      • Assuming this always refers to lambda parameter
      • Ignoring that this requires receiver context
      • Thinking code runs without error
      5. Given the following Kotlin code, what will be printed?
      class Calculator {
          fun calculate() {
              val numbers = listOf(10, 20)
              numbers.run {
                  println(this.sum())
                  numbers.forEach {
                      println(it + this.sum())
                  }
              }
          }
      }
      
      fun main() {
          Calculator().calculate()
      }
      hard
      A. 10\n20\n30
      B. Compilation error due to ambiguous this
      C. 30\n30\n30
      D. 30\n40\n50

      Solution

      1. Step 1: Understand this inside run block

        Inside run, this refers to the numbers list. So, this.sum() is 30.
      2. Step 2: Calculate outputs inside forEach

        For each it in numbers (10 and 20), print it + this.sum(): 10+30=40 and 20+30=50.
      3. Step 3: List all printed lines

        First print: 30
        Then prints: 40 and 50
      4. Final Answer:

        30 40 50 -> Option D
      5. Quick Check:

        this in run = list, sum=30 [OK]
      Hint: Inside run, this is receiver object [OK]
      Common Mistakes:
      • Confusing this inside nested lambdas
      • Assuming this refers to Calculator instance
      • Expecting compilation error due to this
      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