在C中,可以使用 {和} 作为范围分隔符。
例如:
int myfunc()
{
int i = 4;
{
int j = 5;
i = i + j;
...
}
...
}
在此示例中, {和} 会创建一个新范围,因此无法在 j 之外看到 j strong> {和} 。
Kotlin支持吗?
答案 0 :(得分:4)
它没有,因为这个语法创建了一个lambda表达式(然后没有赋值给任何东西,并且永远不会被调用)。
所以这段代码对i
的初始值没有任何作用:
var i = 0
{
i++
}
println(i) // 0
但是,您可以将lambda分配给变量并调用它:
var i = 0
val f: () -> Int = {
i++
}
f()
println(i) // 1
或者以JavaScript-ish风格立即调用它,这可能会被某些人不赞成:
var i = 0
{
i++
}()
println(i) // 1
答案 1 :(得分:4)
添加到@ zsmb13&#39的答案,您可以查看范围函数(Standard.kt)。在Kotlin中创建范围的惯用方法是:
var i = 0
run {
i++
}
println(i)