首页 > 解决方案 > 我可以在课堂外使用扩展 *member* 吗?

问题描述

如果我在 B 类中声明了 A 类型的扩展函数:

class A

class B {
    fun A.foo() = "Hello"
}

我可以从 B 类之外的代码中调用这个函数吗?

val a = A()
val b = B()
a.foo()      // error: unresolved reference: foo
b.foo()      // error: unresolved reference: foo

标签: kotlinextension-function

解决方案


是的:

with(b) { 
    a.foo() 
} 

接受带有B接收器的 lambda 的其他函数也可以工作。


推荐阅读