1

It's clear on how to reference a method of a particular instance: Reference to method of a particular instance in Kotlin

e.g.

val f = a::getItem

However what if getItem is overloaded? I cannot seem to find any material on that.

Let's assume the getItem has the following overloaded functions:

getItem (String) -> Item
getItem (String, Metrics) -> Item

How do I select any particular function by bound instance callable?

Rocky Li
  • 5,641
  • 2
  • 17
  • 33

1 Answers1

5

The context will determine which overload is chosen. In the case of

val f = a::getItem

The context does not say anything about what type a::getItem should be, so if getItem were overloaded, both overloads would be applicable, and there would be a compile-time error telling you exactly that. Something like:

Overload resolution ambiguity. All these functions match.

  • public fun getItem(name: String): Item defined in ...
  • public fun getItem(name: String, metrics: Metrics): Item defined in ...

If you instead give it some information about the type of f:

val f: (String) -> Item = a::getItem

Then it will pick the correct overload.

Sweeper
  • 213,210
  • 22
  • 193
  • 313