Bird
Raised Fist0
Kotlinprogramming~10 mins

With 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 with function to print the length of the string.

Kotlin
val text = "Hello"
with([1]) {
    println(length)
}
Drag options to blanks, or click blank then click option'
Alength
B"Hello"
Ctext
Dprintln
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a string literal instead of the variable.
Using a function name instead of the object.
2fill in blank
medium

Complete the code to use with to build a string and return its length.

Kotlin
val result = with(StringBuilder()) {
    append("Hi")
    append(" there")
    [1]
}
Drag options to blanks, or click blank then click option'
Alength
Bbuild()
CtoString()
Dsize
Attempts:
3 left
💡 Hint
Common Mistakes
Calling toString() without getting length.
Using size which is not a StringBuilder property.
3fill in blank
hard

Fix the error in the code by completing the with block to correctly modify the list.

Kotlin
val numbers = mutableListOf(1, 2, 3)
with(numbers) {
    add(4)
    [1]
}
Drag options to blanks, or click blank then click option'
AaddAll(listOf(5, 6))
Bclear()
Cremove(1)
Dsize
Attempts:
3 left
💡 Hint
Common Mistakes
Using remove which deletes elements instead of adding.
Using clear which empties the list.
4fill in blank
hard

Fill both blanks to create a with block that modifies a StringBuilder and returns the final string.

Kotlin
val result = with(StringBuilder()) {
    [1]("Hello")
    [2](" World")
    toString()
}
Drag options to blanks, or click blank then click option'
Aappend
Binsert
Cdelete
Dreplace
Attempts:
3 left
💡 Hint
Common Mistakes
Using insert which adds text at a specific position.
Using delete or replace which modify existing text.
5fill in blank
hard

Fill all three blanks to use with to configure a MutableList and return its size.

Kotlin
val list = mutableListOf<Int>()
val size = with(list) {
    [1](10)
    [2](20)
    [3]
}
Drag options to blanks, or click blank then click option'
Aadd
Csize
Dclear
Attempts:
3 left
💡 Hint
Common Mistakes
Using clear which empties the list.
Trying to use length which is not a list property.

Practice

(1/5)
1. What is the main purpose of the with function in Kotlin?
easy
A. To define a new class inside a function
B. To create a new thread for concurrent execution
C. To execute multiple operations on the same object without repeating its name
D. To handle exceptions in a concise way

Solution

  1. Step 1: Understand the role of with

    The with function groups multiple calls on the same object, so you don't repeat the object name.
  2. Step 2: Compare with other options

    Options A, B, and D describe unrelated Kotlin features like class definition, threading, and exception handling.
  3. Final Answer:

    To execute multiple operations on the same object without repeating its name -> Option C
  4. Quick Check:

    with groups calls on one object = C [OK]
Hint: Remember: with avoids repeating object name [OK]
Common Mistakes:
  • Confusing with with threading or concurrency
  • Thinking with creates new classes
  • Assuming with handles exceptions
2. Which of the following is the correct syntax to use with in Kotlin?
easy
A. with(object) { /* code block */ }
B. with { object -> /* code block */ }
C. with object { /* code block */ }
D. with(object) -> { /* code block */ }

Solution

  1. Step 1: Recall the syntax of with

    The correct syntax is with(object) { /* code block */ }, where the object is passed as an argument and the block follows in braces.
  2. Step 2: Identify incorrect syntax

    Options B, C, and D misuse arrow notation or omit parentheses, which are syntax errors.
  3. Final Answer:

    with(object) { /* code block */ } -> Option A
  4. Quick Check:

    Correct with syntax uses parentheses and braces = A [OK]
Hint: Use parentheses for object, braces for block in with [OK]
Common Mistakes:
  • Omitting parentheses around the object
  • Using arrow notation incorrectly
  • Placing the block outside braces
3. What is the output of the following Kotlin code?
data class Person(var name: String, var age: Int)

fun main() {
    val person = Person("Alice", 25)
    val result = with(person) {
        age += 1
        "${name} is now $age years old"
    }
    println(result)
}
medium
A. Alice is now 25 years old
B. Runtime error due to modifying age
C. Compilation error due to string interpolation
D. Alice is now 26 years old

Solution

  1. Step 1: Analyze the with block behavior

    The with function uses person as the context. Inside, age is incremented by 1, changing it from 25 to 26.
  2. Step 2: Evaluate the returned string

    The last expression in the block is the string interpolation "${name} is now $age years old", which becomes "Alice is now 26 years old".
  3. Final Answer:

    Alice is now 26 years old -> Option D
  4. Quick Check:

    Age incremented inside with = D [OK]
Hint: Remember last expression in with is the return value [OK]
Common Mistakes:
  • Forgetting that age is incremented inside with
  • Thinking string interpolation causes error
  • Assuming modifying properties causes runtime error
4. Identify the error in this Kotlin code using with:
fun main() {
    val list = listOf(1, 2, 3)
    with(list) {
        add(4)
        println(this)
    }
}
medium
A. Cannot call add on an immutable list
B. Missing parentheses in with call
C. Incorrect use of this inside with
D. Print statement syntax error

Solution

  1. Step 1: Check the list type and mutability

    The list is created with listOf, which returns an immutable list that does not support add.
  2. Step 2: Understand the error cause

    Calling add(4) on an immutable list causes a compile-time error because the method is not available.
  3. Final Answer:

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

    Immutable list blocks add method = A [OK]
Hint: Use mutableListOf to add elements, not listOf [OK]
Common Mistakes:
  • Assuming with changes mutability
  • Thinking this is incorrect inside with
  • Ignoring immutability of listOf
5. Given a mutable map of student names to scores, how can you use with to increase all scores by 5 points and return the updated map? Choose the correct Kotlin code snippet.
hard
A. with(students) { keys.forEach { it += 5 }; this }
B. with(students) { for (key in keys) this[key] = this[key]!! + 5; this }
C. with(students) { mapValues { it.value + 5 } }
D. with(students) { forEach { it.value += 5 }; this }

Solution

  1. Step 1: Understand map mutability and with usage

    The map is mutable, so we can update values by keys inside with. with(students) { for (key in keys) this[key] = this[key]!! + 5; this } correctly loops keys and updates values.
  2. Step 2: Analyze other options for correctness

    with(students) { keys.forEach { it += 5 }; this } tries to add 5 to keys (strings), which is invalid. with(students) { mapValues { it.value + 5 } } returns a new map but does not update original. with(students) { forEach { it.value += 5 }; this } tries to modify it.value in forEach, but map entries are immutable in this context.
  3. Final Answer:

    with(students) { for (key in keys) this[key] = this[key]!! + 5; this } -> Option B
  4. Quick Check:

    Update map values by keys inside with = B [OK]
Hint: Use keys to update mutable map values inside with [OK]
Common Mistakes:
  • Trying to modify keys instead of values
  • Assuming mapValues mutates original map
  • Modifying map entries directly in forEach causes 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