【发布时间】:2019-04-03 15:37:56
【问题描述】:
在 Scala 中,您可以编写
val x = {
... do some complex computations ..
42
}
隐藏代码块内的东西。
我最接近 Kotlin 的是:
val x = {
... do some complex computations ..
42
}()
有没有更好的办法?
编辑:
- 与上述示例中的
run {}基本相同 - 调用 run 成本高吗?
回答:
- 使用
run {}内联,而{}()不使用(请参阅下面我自己的答案)
【问题讨论】:
-
"isn't run {} in the above example基本上相同":它将给出相同的结果,但对
run的调用保证是内联的,而对{ ... }()的调用将创建一个函数对象并调用它。 -
@marstran 为什么要创建函数对象? Run 也只是在 pass lambda 上调用 ()
-
因为
run是一个内联函数。编译器将 lambda 主体复制到调用站点。
标签: kotlin