从 Kotlin 中的另一个类访问静态扩展函数?

MoM*_*oMo 2 android kotlin extension-function

假设我们有以下扩展函数:

class Helper {
  companion object {
    fun Int.plus(value: String) = Integer.valueOf(value).plus(this)
  }
Run Code Online (Sandbox Code Playgroud)

}

如何plusHelper另一个类中的类访问扩展函数。有没有办法让我们可以做这样的事情,例如:

class OtherClass {
  fun someMethod() {
    val eight = 7.Helper.Companion.plus("1")
  }
Run Code Online (Sandbox Code Playgroud)

}

vod*_*dan 5

在您的示例中Int.plus(value: String)Helper.Companion对象的成员函数(它是伴随对象还是在另一个类中无关紧要)。这种情况在文档的将扩展声明为成员部分中进行了描述。

简而言之,要访问具有两个接收器(类型为扩展接收器和类型Int为调度接收器Helper.Companion)的函数,您必须将它们都放在作用域中。

这可以通过多种方式实现:

with(Helper.Companion) {
    239.plus("")
}
Run Code Online (Sandbox Code Playgroud)

或者

with(Helper.Companion) {
    with(239) {
        plus("")
    }
}
Run Code Online (Sandbox Code Playgroud)

PS 把一个扩展函数放到一个伴生对象中是非常不规则和不习惯的。我很难想象你为什么需要那个。