Jestem naprawdę zdezorientowany z powodu delegacji kotlin. Pozwólcie, że opiszę tutaj regularne podejście polimorfizmu, które wygląda tak samo jak delgacja kotlin.W jaki sposób delegacja kotlin jest przydatna?
interface Base {
fun print()
}
class BaseImpl(val x: Int) : Base {
override fun print() { print(x) }
}
fun main(args: Array<String>) {
val b : Base = BaseImpl(10)
b.print() // prints 10
}
mogę przekazać wszelkie wdrożone klasę Base
interfejs do b
zmiennej do wywołania metody obiektu określonej klasy użytkownika. Więc jaka jest korzyść z delegacji kotlin
? Które jest opisane here.
interface Base {
fun print()
}
class BaseImpl(val x: Int) : Base {
override fun print() { print(x) }
}
class Derived(b: Base) : Base by b // why extra line of code?
// if the above example works fine without it.
fun main(args: Array<String>) {
val b = BaseImpl(10)
Derived(b).print() // prints 10
}
Wiem, że jest to prosty scenariusz, w którym oba kody działają poprawnie. Powinna być korzyść z delegacji, dlatego kotlin go wprowadził. Jaka jest różnica? i w jaki sposób delegacja kotlin może być przydatna? Proszę podać przykład, który można by porównać z podejściem polimorfizmu.
Zastanawiam się, czy jest to pytanie bardziej o zaletach delegacji niż o tym, jak Kotlin ją wdraża. –
Zapytałem, czy wie, w jaki sposób delegacja kotlin jest przydatna? nie w jaki sposób delegacja jest przydatna. ponieważ już wiem o celu delegacji. Ale implementacja kotlina mnie dezorientuje. – UnKnown
Pierwszy blok kodu nie daje wyniku równoważnego do drugiego. Spróbuj ręcznie zaimplementować 'Derived', a poczujesz różnicę. – Ilya