在 Kotlin 中重载对特定实例方法的引用
Overloading on reference to method of a particular instance in Kotlin
很清楚如何引用特定实例的方法:
例如
val f = a::getItem
但是如果 getItem
超载了怎么办?我似乎无法在上面找到任何 material。
假设 getItem
具有以下重载函数:
getItem (String) -> Item
getItem (String, Metrics) -> Item
如何 select 绑定实例可调用的任何特定函数?
上下文将决定选择哪个重载。在
的情况下
val f = a::getItem
上下文没有说明 a::getItem
应该是什么类型,所以如果 getItem
被重载,两个重载都适用,并且会有一个编译时错误告诉你确切的那。类似于:
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 ...
如果你改为给它一些关于 f
类型的信息:
val f: (String) -> Item = a::getItem
然后它将选择正确的重载。
很清楚如何引用特定实例的方法:
例如
val f = a::getItem
但是如果 getItem
超载了怎么办?我似乎无法在上面找到任何 material。
假设 getItem
具有以下重载函数:
getItem (String) -> Item
getItem (String, Metrics) -> Item
如何 select 绑定实例可调用的任何特定函数?
上下文将决定选择哪个重载。在
的情况下val f = a::getItem
上下文没有说明 a::getItem
应该是什么类型,所以如果 getItem
被重载,两个重载都适用,并且会有一个编译时错误告诉你确切的那。类似于:
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 ...
如果你改为给它一些关于 f
类型的信息:
val f: (String) -> Item = a::getItem
然后它将选择正确的重载。