Avatar ·

¿Qué hace la palabra clave `by` en Kotlin? Explique con ejemplos

¡Hola a todos! Empecé a estudiar Kotlin recientemente, cambié desde Java, y me encontré con una sintaxis que no entiendo. Encuentro en el código de mis colegas la palabra clave `by`, pero no puedo entender su propósito. \n\nPor ejemplo, he visto este código:\n\n```kotlin\nclass MyClass {\n var name: String by Delegates.observable("Initial") { prop, old, new ->\n println("$old -> $new")\n }\n}\n```\n\nO esto otro:\n\n```kotlin\nclass Derived(base: Base) : Base by base\n```\n\nEntiendo que esto está relacionado con la delegación, pero no me queda claro cómo funciona internamente. En Java solo teníamos herencia e interfaces, pero aquí hay algo de magia.\n\nExpliquen, por favor, ¿para qué se usa `by`? ¿En qué casos se debe aplicar? ¿Y cómo funciona a nivel de bytecode? Agradeceré ejemplos sencillos para que un principiante lo entienda.