Kotlin:一个类型的扩展函数如何在外部访问?

我经常遇到这种情况,我在一个类型中有抽象扩展函数。

interface PetScript { fun Pet.feed() fun Pet.call() } 

具有扩展功能的功能允许非常简约的实现,因为它自动给出this上下文。

不幸的是,我知道使用这些函数的唯一方法是编写传递给扩展的样板标准函数。

 interface PetScript { fun Pet.feed() fun Pet.call() fun feed_(pet: Pet) = pet.feed() fun call_(pet: Pet) = pet.call() } 

这样我可以使用像这样的功能:

 val pet = ... val script = ... script.feed_(pet) script.call_(pet) 

有没有更好的,更习惯的方式来使用类型之外的扩展函数?

在扩展功能上有多个接收者的长期票证 ,但简单的解决方法是嵌套你的范围:

 val pet = ... val script = ... script.run { pet.feed() pet.call() }