Avatar ·

Kotlin 中的 `by` 关键字:它的作用是什么?通过示例解释

大家好!我最近开始学习 Kotlin,从 Java 转过来,遇到了一些令我困惑的语法。在同事的代码中,我看到了关键字 `by`,但无法理解它的用途。\n\n例如,我见过这样的代码:\n\n```kotlin\nclass MyClass {\n var name: String by Delegates.observable("Initial") { prop, old, new ->\n println("$old -> $new")\n }\n}\n```\n\n或者像这样的代码:\n\n```kotlin\nclass Derived(base: Base) : Base by base\n```\n\n我知道这与委托有关,但我不清楚它在底层是如何工作的。在 Java 中,我们只有继承和接口,而这里有一些魔法。\n\n请解释一下 `by` 的用途是什么?在哪些情况下应该使用它?它在字节码层面是如何工作的?如果能提供一些简单的例子,帮助新手理解,我将不胜感激。\n<<>>\n

Kotlin 中关键字 `by` 的两种主要用途

\n\n

\nKotlin 中的关键字 by 实现了委托模式(deleg