“接收器对象”和“扩展接收器”有什么区别吗?

很难根据文档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扩展接收器 。 如果fooclass C之外被宣布,那么它将只有一个接收者将是扩展接收者 D

简而言之, 接收者对象扩展接收者可以是相同的,但是也有称为调度接收者的另一种类型的接收者对象

有关更多详细信息,请参阅将扩展声明为成员 – 扩展 – Kotlin编程语言 。