Ну в общем случае просто класс. Идея очень грубо такая (могу местами наврать, но суть вроде похожа) interface A //and some impl interface B //and some impl class Composite(val a: A, val b: B): A by a, B by b fun A.withCompositeContext(B b, action: Composite.() -> Unit) = Composite(this, b).run(::action) Тогда экстеншны можно навешивать на композитный тип
Обсуждают сегодня