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?
CodePudding user response:
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): Itemdefined in ...public fun getItem(name: String, metrics: Metrics): Itemdefined 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.
