Bird
Raised Fist0
Kotlinprogramming~10 mins

Function references (::functionName) 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 create a function reference to the 'println' function.

Kotlin
val printer = [1]println
printer("Hello, Kotlin!")
Drag options to blanks, or click blank then click option'
A->
B.
C::
D=>
Attempts:
3 left
💡 Hint
Common Mistakes
Using '.' instead of '::' which calls the function instead of referencing it.
Using '->' or '=>' which are not valid for function references in Kotlin.
2fill in blank
medium

Complete the code to pass a function reference of 'isEven' to the 'filter' function.

Kotlin
fun isEven(n: Int) = n % 2 == 0
val numbers = listOf(1, 2, 3, 4)
val evens = numbers.filter([1]isEven)
println(evens)
Drag options to blanks, or click blank then click option'
A::
B.
C->
D=>
Attempts:
3 left
💡 Hint
Common Mistakes
Using '.' which tries to call the function instead of referencing it.
Using lambda syntax '->' or '=>' which is incorrect here.
3fill in blank
hard

Fix the error by completing the code to create a function reference to the 'toUpperCase' method of String.

Kotlin
val toUpper: (String) -> String = [1]String::toUpperCase
println(toUpper("kotlin"))
Drag options to blanks, or click blank then click option'
AString::
B::
CString.
D.
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'String::' before 'String::toUpperCase' which is redundant.
Using '.' which tries to call the method instead of referencing it.
4fill in blank
hard

Fill both blanks to create a map of words to their lengths using a function reference and a property reference.

Kotlin
val words = listOf("apple", "banana", "cherry")
val lengths = words.associateWith([1]) { it.[2] }
println(lengths)
Drag options to blanks, or click blank then click option'
AString::length
Blength
DString.length
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'String.length' which is invalid syntax.
Using 'length' without context or as a string.
5fill in blank
hard

Fill all three blanks to filter a list of strings by length using a function reference and a lambda.

Kotlin
val words = listOf("cat", "dog", "elephant", "fox")
val filtered = words.filter { word -> word.length [1] [2] }
val lengthCheck: (String) -> Boolean = [3] { it.length > 3 }
println(filtered)
println(filtered.filter(lengthCheck))
Drag options to blanks, or click blank then click option'
A>
B3
C::
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' which filters the wrong words.
Not using '::' when assigning the lambda to the function variable.

Practice

(1/5)
1. What does the Kotlin syntax ::functionName represent?
easy
A. A call to the function named functionName
B. A comment about the function named functionName
C. A variable declaration named functionName
D. A reference to the function named functionName

Solution

  1. Step 1: Understand the :: operator in Kotlin

    The :: operator is used to get a reference to a function, not to call it.
  2. Step 2: Differentiate between calling and referencing

    Calling a function uses parentheses like functionName(), while referencing uses ::functionName.
  3. Final Answer:

    A reference to the function named functionName -> Option D
  4. Quick Check:

    Function reference = ::functionName [OK]
Hint: Remember :: means 'point to function', not call it [OK]
Common Mistakes:
  • Confusing function reference (::) with function call (())
  • Thinking :: declares a variable
  • Assuming :: is a comment or annotation
2. Which of the following is the correct syntax to pass a function reference to map in Kotlin?
easy
A. list.map(::functionName)
B. list.map(:functionName)
C. list.map(functionName())
D. list.map(functionName)

Solution

  1. Step 1: Identify how to pass function references in Kotlin

    Function references use the :: operator before the function name when passed as arguments.
  2. Step 2: Check each option for correct syntax

    list.map(::functionName) uses ::functionName, which is the correct way to pass a function reference to map.
  3. Final Answer:

    list.map(::functionName) -> Option A
  4. Quick Check:

    Pass function reference with :: [OK]
Hint: Use :: before function name when passing as argument [OK]
Common Mistakes:
  • Passing function call instead of reference (using parentheses)
  • Omitting :: operator
  • Using incorrect single colon : instead of double ::
3. What is the output of this Kotlin code?
fun square(x: Int) = x * x
val numbers = listOf(1, 2, 3)
val squares = numbers.map(::square)
println(squares)
medium
A. [1, 4, 9]
B. [square, square, square]
C. [1, 2, 3]
D. Compilation error

Solution

  1. Step 1: Understand the function reference usage

    The ::square passes the square function to map, which applies it to each element.
  2. Step 2: Calculate the result of applying square to each number

    Applying square to 1, 2, 3 gives 1, 4, 9 respectively.
  3. Final Answer:

    [1, 4, 9] -> Option A
  4. Quick Check:

    map(::square) squares each element [OK]
Hint: map(::function) applies function to each list item [OK]
Common Mistakes:
  • Expecting original list instead of transformed list
  • Confusing function reference with function call
  • Thinking output is function names instead of results
4. Identify the error in this Kotlin code snippet:
fun greet(name: String) = "Hello, $name"
val greeter = greet
println(greeter("Alice"))
medium
A. Missing parentheses when assigning function reference
B. Cannot assign function directly without :: operator
C. Function greet must return Unit
D. No error, code runs fine

Solution

  1. Step 1: Check how function references are assigned

    Assigning a function to a variable requires the :: operator to get a reference.
  2. Step 2: Identify the missing :: operator

    The code assigns greet instead of ::greet, causing a type mismatch error.
  3. Final Answer:

    Cannot assign function directly without :: operator -> Option B
  4. Quick Check:

    Use :: to assign function reference [OK]
Hint: Use :: when assigning function to variable [OK]
Common Mistakes:
  • Assigning function name without ::
  • Adding parentheses which calls function instead of referencing
  • Assuming function must return Unit
5. Given this Kotlin code, what will be the output?
fun isEven(n: Int) = n % 2 == 0
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evenNumbers = numbers.filter(::isEven)
println(evenNumbers)

Choose the correct output and explain why function references are useful here.
hard
A. [true, false, true, false, true, false]
B. [1, 3, 5]
C. [2, 4, 6]
D. Compilation error due to filter usage

Solution

  1. Step 1: Understand the function reference with filter

    The ::isEven passes the isEven function to filter, which keeps elements where the function returns true.
  2. Step 2: Apply isEven to each number and filter

    Numbers 2, 4, and 6 are even, so they remain in the filtered list.
  3. Step 3: Explain usefulness of function references

    Function references let us pass existing functions easily without writing extra lambdas.
  4. Final Answer:

    [2, 4, 6] -> Option C
  5. Quick Check:

    filter(::isEven) keeps even numbers [OK]
Hint: filter(::function) keeps items where function returns true [OK]
Common Mistakes:
  • Confusing filter with map output
  • Expecting boolean list instead of filtered list
  • Not using :: for function reference
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