Какие языки программирования поддерживают реализацию неявного интерфейса путем делегирования?

Котлин может сделать этот очень аккуратный трюк:

class Derived(b: Base) : Base by b 

что делает ваш класс Derived реализованным Base , и все методы Base явно не реализованные в Derived , автоматически делегируются члену b . Я не программирую в Котлине, и потерять 'this' указатель может быть весьма ограниченным, но похоже, что это простая вещь, которая может означать тонны для ремонтопригодности, которые должен иметь каждый язык.

    Некоторые языки с делегатами:

    • Xtend

    • стриж

    • Groovy

    • Все языки, которые позволяют перезаписывать какой-то пропущенный метод, могут легко реализовать делегирование (используя то, что обычно называется missing method proxy провайдером): ie: Ruby, Python, JavaScript es6, Smalltalk

    Пример отсутствующего прокси-сервера метода с использованием Ruby (взято отсюда ):

     class Proxy def initialize(subject) @subject = subject end private def method_missing(method, *args, &block) @subject.send(method, *args, &block) end end proxied_array = Proxy.new([1,2,3]) puts proxied_array.size # 3 

    В Delphi реализовано ключевое слово

      IMyIntf = interface procedure DoWork1(); procedure DoWork2(); ... end; TMyClass = class(TInterfacedObject, IMyIntf) private FIntf: IMyIntf; public property Prop: IMyIntf read FIntf implements IMyIntf; end; 
    Interesting Posts

    Плагин android studio с id: 'kotlin-android-extensions'

    Не удается перейти к тегу @sample

    Тревога Котлина и дженериков

    Как добавить вторичную легенду в диаграмму JavaFX?

    Создание класса Parcelable со вторичным конструктором, который принимает список как параметр в Kotlin

    Может ли кто-нибудь здесь подробно описать структуру проекта приложения «Котлин / Родник»? Кроме того, особенности работы различных модулей

    GridLayout в Котлине?

    воспроизведение любого встроенного видео в веб-браузере в Android с намерением

    как указать порядок плагина компилятора maven

    Dagger2 и квалификаторы в зависимых компонентах

    Как преобразовать Int в Hex String в Kotlin?

    Можете ли вы отобразить / свести строку в Int?

    (Java + Kotlin) Autowiring: ожидается не менее 1 бит, который квалифицируется как кандидат на автоподключение для этой зависимости

    Как получить доступ к значению поля в методе get ()

    ClassNotFoundException при ссылке на классы Kotlin

    Давайте будем гением компьютера.