An infix function is a special kind of function that allows you to call it using infix notation, which means you can write it between its receiver and argument without dots or parentheses, making the code more readable.
Click to reveal answer
beginner
How do you declare an infix function in Kotlin?
You declare an infix function by adding the keyword infix before the function name. It must be a member function or an extension function with a single parameter and no varargs or default values.
Click to reveal answer
intermediate
Example: What does this Kotlin code do?
infix fun Int.times(str: String) = str.repeat(this)
This code defines an infix function times for Int that repeats the given string the number of times equal to the integer. For example, 2 times "Hi" returns "HiHi".
Click to reveal answer
intermediate
What are the requirements for a function to be used as infix in Kotlin?
It must be a member or extension function, have a single parameter, not accept varargs or default parameter values, and be marked with the infix keyword.
Click to reveal answer
beginner
Why use infix functions? Give a real-life analogy.
Infix functions make code look like natural language, improving readability. Like saying "I give you" instead of "I.give(you)", it feels more like a simple conversation.
Click to reveal answer
Which keyword is used to declare an infix function in Kotlin?
Ainfix
Binline
Coverride
Dfun
✗ Incorrect
The keyword infix is used before the function name to declare an infix function.
What is a requirement for the parameter of an infix function?
AIt must be nullable
BIt can have multiple parameters
CIt must be a vararg parameter
DIt must be a single parameter without default values
✗ Incorrect
Infix functions must have exactly one parameter without default values or varargs.
How would you call an infix function named connect on an object a with argument b?
Aconnect(a, b)
Ba.connect(b)
Ca connect b
Dconnect a b
✗ Incorrect
Infix functions allow calling like a connect b without dots or parentheses.
Can an infix function be a top-level function (not inside a class or object)?
AOnly if marked inline
BNo, it must be a member or extension function
CYes, always
DOnly if it has no parameters
✗ Incorrect
Infix functions must be member or extension functions, not top-level standalone functions.
What is the benefit of using infix functions?
AImproves code readability by allowing natural language style calls
BMakes functions run faster
CAllows multiple parameters
DAutomatically handles null safety
✗ Incorrect
Infix functions improve readability by letting you write calls that look like natural language.
Explain what an infix function is and how to declare one in Kotlin.
Think about how you write functions that look like natural language.
You got /4 concepts.
Describe a simple example of an infix function and how it improves code readability.
Use a real-life analogy or simple string repetition example.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of using infix functions in Kotlin?
easy
A. To call functions without dots and parentheses for more readable code
B. To allow functions to have multiple parameters
C. To make functions run faster
D. To restrict functions to only private visibility
Solution
Step 1: Understand the role of infix functions
Infix functions allow calling a function without using dots and parentheses, making code more readable.
Step 2: Compare options with this purpose
Only To call functions without dots and parentheses for more readable code correctly describes this purpose; others mention unrelated features.
Final Answer:
To call functions without dots and parentheses for more readable code -> Option A
Quick Check:
Infix functions improve readability = D [OK]
Hint: Infix means calling without dots and parentheses [OK]
Common Mistakes:
Thinking infix allows multiple parameters
Believing infix changes function speed
Confusing infix with visibility modifiers
2. Which of the following is the correct syntax to declare an infix function in Kotlin?
easy
A. fun add infix(x: Int): Int = this + x
B. infix fun add(x: Int): Int
C. fun infix add(x: Int, y: Int): Int = x + y
D. infix fun add(x: Int): Int = this + x
Solution
Step 1: Recall infix function syntax
An infix function must be declared with the keyword infix before fun, have exactly one parameter, and a body.
Step 2: Check each option
infix fun add(x: Int): Int = this + x correctly uses infix fun add(x: Int): Int = this + x. fun infix add(x: Int, y: Int): Int = x + y has two parameters, invalid. infix fun add(x: Int): Int misses function body. fun add infix(x: Int): Int = this + x has wrong keyword order.
Final Answer:
infix fun add(x: Int): Int = this + x -> Option D
Quick Check:
Infix keyword before fun, one parameter only = A [OK]
Hint: Infix keyword comes before fun, one parameter only [OK]
Common Mistakes:
Declaring multiple parameters in infix function
Placing infix keyword after fun
Omitting function body
3. What is the output of the following Kotlin code?
class Calculator {
infix fun add(x: Int): Int = x + 10
}
fun main() {
val calc = Calculator()
println(calc add 5)
}
medium
A. SyntaxError
B. 5
C. 15
D. 10
Solution
Step 1: Understand the infix function call
The infix function add adds 10 to the parameter x. Calling calc add 5 means calc.add(5).
Step 2: Calculate the result
5 + 10 = 15, so the printed output is 15.
Final Answer:
15 -> Option C
Quick Check:
5 + 10 = 15 [OK]
Hint: Infix calls work like normal calls without dots [OK]
Common Mistakes:
Confusing infix call with normal method call syntax
Expecting parameter to be ignored
Thinking infix changes return value
4. Identify the error in the following Kotlin code using an infix function:
class Person {
infix fun greet(name: String, age: Int) {
println("Hello $name, age $age")
}
}
fun main() {
val p = Person()
p greet ("Alice", 30)
}
medium
A. Missing parentheses in function call
B. Infix functions cannot have more than one parameter
C. Infix functions must return a value
D. Class Person cannot have infix functions
Solution
Step 1: Check infix function parameter rules
Infix functions must have exactly one parameter. Here, greet has two parameters, which is invalid.
Step 2: Verify other options
Parentheses are optional in infix calls. Infix functions can return Unit (no value). Classes can have infix functions. So only Infix functions cannot have more than one parameter is correct.
Final Answer:
Infix functions cannot have more than one parameter -> Option B
Quick Check:
One parameter max for infix = A [OK]
Hint: Infix functions take exactly one parameter [OK]
Common Mistakes:
Trying to use multiple parameters in infix function
Thinking parentheses are always required
Believing infix functions must return a value
5. Given the following Kotlin code, what will be the output?
class Box(val value: Int) {
infix fun combine(other: Box): Box = Box(this.value + other.value)
}
fun main() {
val box1 = Box(3)
val box2 = Box(7)
val result = box1 combine box2 combine Box(5)
println(result.value)
}
hard
A. 15
B. 10
C. SyntaxError
D. 35
Solution
Step 1: Understand chaining of infix calls
The expression box1 combine box2 combine Box(5) is evaluated left to right as (box1 combine box2) combine Box(5).