kotlin - Kotlin:如何限制块内的范围?
问题描述
在 Java 中,可以使用花括号来描述具有自己作用域的代码块:
void f() {
{
int x = 1
// do something with x
}
// x not visible here anymore
}
这是如何在 Kotlin 中完成的?
解决方案
您可以run
为此目的使用:
inline fun <R> run(block: () -> R): R
(source)
调用指定的功能块并返回其结果。
fun f() {
run {
val x = 1
// do something with x
}
// x not visible here anymore
}
这是一个内联函数(就像 Kotlin 中的许多其他类似语言结构的函数一样),因此在性能方面它等同于 Java 代码。
{}
不起作用,因为它创建了一个 lambda(实际上从未调用过它,所以它什么也不做)。{ foo }()
您可以使用创建 lambda 的开销立即调用它run
(
推荐阅读
- c# - 为什么使用 FileHelpers 从 CSV 加载时 DataTable 列是只读的?
- java - Spring Cloud 配置服务器 aws codecommit - git-upload-pack 不允许
- html - 将 HTML 元素移动到页面中间
- c - 是否有任何 gcc 编译器选项或类似的东西来绕过过时的 get 函数?
- postgresql - 使用 Power BI 中的 DAX 度量对某个时间段进行滚动平均
- c++ - 远裁剪平面之外的对象在透视图中渲染
- r - 如何在 R 中创建 4D 等高线图?
- html - 永久可用文件下载以进行互联网速度测试
- ruby-on-rails - 尽管接收到值,但 Ransack 搜索始终使用“LIKE NULL”检查 SQL 语句
- umbraco - Umbraco,在子节点中显示来自媒体选择器的图像