В настоящее время я работаю над проектом Kotlin, имеющим дело с большим количеством оборудования, и я искал способ создать что-то похожее на функцию расширения, за исключением класса. В этом случае я хочу, чтобы один класс действовал как подкласс другого, но все же был отделен и в другом пакете. Обычно я бы использовал такой класс:
class Foo() {
fun doSomething() {
...
}
}
class Bar(val foo: Foo) {
fun doSomethingWithFoo() {
foo.doSomething()
}
}
val myFoo = Foo()
val myBar = Bar(myFoo)
myBar.doSomethingWithFoo()
Можно ли сделать этот код более читабельным, сделав что-нибудь, что можно сделать с функцией расширения?
// Is this possible?
val myFoo = Foo()
val myBar = myFoo.Bar()
myBar.doSomethingWithFoo()
Сейчас я использую функцию расширения оболочки в качестве альтернативы, но мне было интересно, можно ли этого достичь напрямую.
// Wrapper function I'm using
fun Foo.Bar(): Bar {
return Bar(this)
}