首页 > 解决方案 > Kotlin:如何限制块内的范围?

问题描述

在 Java 中,可以使用花括号来描述具有自己作用域的代码块:

void f() {
  {
    int x = 1
    // do something with x
  }

  // x not visible here anymore
}

这是如何在 Kotlin 中完成的?

标签: kotlin

解决方案


您可以run为此目的使用:

inline fun <R> run(block: () -> R): R (source)
调用指定的功能块并返回其结果。

kotlin.run

fun f() {
    run {
        val x = 1
        // do something with x
    }
    // x not visible here anymore
}

这是一个内联函数(就像 Kotlin 中的许多其他类似语言结构的函数一样),因此在性能方面它等同于 Java 代码。


{}不起作用,因为它创建了一个 lambda(实际上从未调用过它,所以它什么也不做)。{ foo }()您可以使用创建 lambda 的开销立即调用它run


推荐阅读