Bird
Raised Fist0
Kotlinprogramming~10 mins

Why operators are functions in Kotlin - Test Your Understanding

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

Complete the code to define a function that adds two numbers using operator overloading.

Kotlin
operator fun Int.[1](other: Int): Int = this + other
Drag options to blanks, or click blank then click option'
Asum
Badd
Cplus
Dcombine
Attempts:
3 left
💡 Hint
Common Mistakes
Using a function name that is not recognized as an operator function.
2fill in blank
medium

Complete the code to overload the '*' operator for a custom class.

Kotlin
class Multiplier(val value: Int) {
    operator fun [1](other: Multiplier): Multiplier {
        return Multiplier(this.value * other.value)
    }
}
Drag options to blanks, or click blank then click option'
Amult
Btimes
Cmultiply
Dproduct
Attempts:
3 left
💡 Hint
Common Mistakes
Using a non-standard function name like 'multiply' which is not recognized as an operator.
3fill in blank
hard

Fix the error in the operator function name to correctly overload the '-' operator.

Kotlin
operator fun Int.[1](other: Int): Int = this - other
Drag options to blanks, or click blank then click option'
Aminus
Bsubtract
Csub
Ddifference
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'subtract' or other synonyms instead of 'minus'.
4fill in blank
hard

Fill both blanks to create a custom operator function for the '%' operator.

Kotlin
class Mod(val number: Int) {
    operator fun [1](other: Mod): Mod {
        return Mod(this.number [2] other.number)
    }
}
Drag options to blanks, or click blank then click option'
Arem
B%
C/
Dmod
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'mod' as function name or '/' as operator symbol.
5fill in blank
hard

Fill all three blanks to overload the '==' operator by defining the 'equals' function.

Kotlin
class Person(val name: String) {
    override fun [1](other: Any?): Boolean {
        if (other !is Person) return false
        return this.name [2] other.name
    }

    operator fun [3](other: Person) = this == other
}
Drag options to blanks, or click blank then click option'
Aequals
B==
DcompareTo
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'compareTo' instead of 'equals' for equality check.

Practice

(1/5)
1. Why does Kotlin treat operators like functions?
easy
A. To allow customizing operator behavior for different types
B. Because Kotlin does not support functions
C. To make the code run faster
D. Because operators are only used in math

Solution

  1. Step 1: Understand Kotlin's operator design

    Kotlin treats operators as functions so you can define how they behave for your own classes.
  2. Step 2: Recognize the benefit

    This makes code flexible and readable by allowing operator overloading.
  3. Final Answer:

    To allow customizing operator behavior for different types -> Option A
  4. Quick Check:

    Operators as functions = Custom behavior [OK]
Hint: Operators are functions to customize behavior easily [OK]
Common Mistakes:
  • Thinking operators are only for math
  • Believing Kotlin lacks functions
  • Assuming operators make code faster
2. Which of these is the correct way to declare an operator function for plus (+) in Kotlin?
easy
A. operator fun plus(other: MyClass): MyClass
B. fun plus(other: MyClass): MyClass
C. fun operator plus(other: MyClass): MyClass
D. operator plus fun(other: MyClass): MyClass

Solution

  1. Step 1: Recall Kotlin operator function syntax

    Operator functions must use the keyword operator before fun.
  2. Step 2: Check the options

    Only operator fun plus(other: MyClass): MyClass correctly places operator before fun and defines the function properly.
  3. Final Answer:

    operator fun plus(other: MyClass): MyClass -> Option A
  4. Quick Check:

    operator keyword before fun = correct syntax [OK]
Hint: Use 'operator fun' to declare operator functions [OK]
Common Mistakes:
  • Placing 'operator' after 'fun'
  • Omitting 'operator' keyword
  • Misordering keywords
3. What will be the output of this Kotlin code?
data class Point(val x: Int, val y: Int) {
    operator fun plus(other: Point) = Point(x + other.x, y + other.y)
}

fun main() {
    val p1 = Point(1, 2)
    val p2 = Point(3, 4)
    val p3 = p1 + p2
    println(p3)
}
medium
A. Point(4, 6)
B. Point(x=4, y=6)
C. Error: Operator '+' not defined
D. Point(x=1, y=2) + Point(x=3, y=4)

Solution

  1. Step 1: Understand operator plus function

    The plus operator adds x and y values of two Point objects and returns a new Point.
  2. Step 2: Calculate the result

    p1 + p2 = Point(1+3, 2+4) = Point(4, 6). Printing a data class shows property names.
  3. Final Answer:

    Point(x=4, y=6) -> Option B
  4. Quick Check:

    p1 + p2 = Point(x=4, y=6) [OK]
Hint: Data class print shows property names [OK]
Common Mistakes:
  • Expecting Point(4, 6) without property names
  • Thinking '+' is undefined
  • Printing the expression instead of result
4. Identify the error in this Kotlin code that tries to overload the minus (-) operator:
class Counter(var count: Int) {
    fun operator minus(other: Counter): Counter {
        return Counter(count - other.count)
    }
}
medium
A. Function must return Int, not Counter
B. Missing 'operator' keyword before 'fun'
C. Minus operator cannot be overloaded
D. Incorrect order: 'fun operator' should be 'operator fun'

Solution

  1. Step 1: Check operator function syntax

    The 'operator' keyword must come before 'fun' in Kotlin.
  2. Step 2: Identify the error in code

    The code uses 'fun operator' which is incorrect; it should be 'operator fun'.
  3. Final Answer:

    Incorrect order: 'fun operator' should be 'operator fun' -> Option D
  4. Quick Check:

    operator keyword before fun = correct syntax [OK]
Hint: Put 'operator' before 'fun' keyword [OK]
Common Mistakes:
  • Placing 'operator' after 'fun'
  • Thinking minus can't be overloaded
  • Wrong return type assumption
5. You want to create a Kotlin class Vector that supports both addition (+) and multiplication (*) operators. How should you design these operators as functions to keep your code clean and flexible?
hard
A. Create separate classes for addition and multiplication
B. Use global functions without 'operator' keyword
C. Define 'operator fun plus' and 'operator fun times' inside Vector class
D. Override '+' and '*' symbols directly without functions

Solution

  1. Step 1: Understand operator overloading in Kotlin

    Kotlin requires operator functions inside the class or as extensions with the 'operator' keyword.
  2. Step 2: Choose the clean design

    Defining 'operator fun plus' and 'operator fun times' inside Vector class keeps code organized and flexible.
  3. Final Answer:

    Define 'operator fun plus' and 'operator fun times' inside Vector class -> Option C
  4. Quick Check:

    Operator functions inside class = clean, flexible [OK]
Hint: Put operator functions inside class with 'operator' keyword [OK]
Common Mistakes:
  • Trying to override symbols directly
  • Omitting 'operator' keyword
  • Using global functions without operator keyword
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