根据文档https://kotlinlang.org/docs/reference/extensions.html很难说
所以我想知道接收器对象和扩展接收器是否相同?还是名称取决于上下文?
根据文档https://kotlinlang.org/docs/reference/extensions.html很难说
所以我想知道接收器对象和扩展接收器是否相同?还是名称取决于上下文?
扩展接收器是接收器对象,而接收器对象是调度接收器或扩展接收器。
在一个类中,您可以为另一个类声明扩展。在这样的扩展中,有多个隐式接收器- 可以在没有限定符的情况下访问其对象成员。声明扩展的类的实例称为调度接收器,扩展方法的接收器类型的实例称为扩展接收器。
class D { fun bar() { ... } } class C { fun baz() { ... } fun D.foo() { bar() // calls D.bar baz() // calls C.baz } fun caller(d: D) { d.foo() // call the extension function } }
在上面的示例中,该函数foo
有两个隐式接收器C
:调度接收器D
和扩展接收器。如果foo
在外部声明,class C
那么它将只有一个接收器,即扩展接收器 D
。
简而言之,接收器对象和扩展接收器可以相同,但还有另一种类型的接收器对象,称为调度接收器。
有关更多详细信息,请参阅将扩展声明为成员 - 扩展 - Kotlin 编程语言。