我可以使用 class 以外的分机 *member* 吗?

Can I use an extension *member* from outside the class?

如果我在 class B:

中声明了类型 A 的扩展函数
class A

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

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

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

不,当您在 B 中定义 A.foo 时,您实际上已经将函数的作用域限制在 class 中。但是,您始终可以将它移到 class 之外......函数也可以是顶级的:)

是:

with(b) { 
    a.foo() 
} 

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