Kotlin: Как можно получить доступ к функциям расширения внутри одного типа извне?

Я часто сталкиваюсь с сценарием, где у меня есть абстрактные функции расширения внутри типа.

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

Наличие функций функций расширения допускает очень минималистические реализации, потому что это дает автоматический контекст.

К сожалению, единственный способ использовать эти функции – написать стандартные стандартные шаблоны, которые переходят к расширениям.

 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() } 
    Intereting Posts
    Используя черты с классами данных в Котлине? Инициализировать поле абстрактного класса в конструкторе ребенка Заменить java-общий интерфейс в Kotlin для привязки данных Возврат компилятора Kotlin: неразрешенная ссылка: springframework весной 5.0 Должен ли возврат DAO от Kotlin Необязательный или нулевой? Как получить доступ к статическим полям с отражением в котлин? Проблема с компиляцией Dagger2 в Котлине Как расширить статические поля Java в kotlin Каков правильный способ установки и семени базы данных с помощью искусственных данных для тестирования интеграции Kotlin Closable и SQLiteDatabase на Android Kapt не работает с AutoValue в Android Studio 3.0 Библиотека сохранности Android Room и Kotlin Как создать параметр конструктора типа «Единица» Kotlin с параметром одного типа с kotlinpoet? Странное поведение compose и ObservableTransformer в RxJava, когда переданный родословный расширяет что-то когда выражение kotlin как проверить, когда a & b