Avatar ·

何时在 Kotlin 中使用 run、let、apply、also 和 with?示例与解释

大家好!我刚从 Java 开始学习 Kotlin,作用域函数(scope functions):run、let、apply、also 和 with 让我非常困惑。我读了文档,但仍然不明白何时使用哪一个。 例如,我经常看到这样的代码: ```kotlin val numbers = mutableListOf("one", "two", "three") numbers.let { println(it) } numbers.apply { add("four") } numbers.run { println("Size: $size") } ``` 但为什么不能直接写 `println(numbers)` 或 `numbers.add("four")`?`let` 和 `apply` 有什么区别?还有 `also` 有什么用? 我还尝试用配置初始化对象: ```kotlin val person = Person().apply { name = "John" age = 30 } ``` 这有效,但用 `with` 也能做到同样的事: ```kotlin val person = with(Person()) { name = "John" age = 30 this } ``` 有什么区别?什么时候用 `run` 而不是 `apply`? 感谢提供清晰的规则和每个函数的示例。