在 C 中,可以使用{和}作为范围分隔符。
例如:
int myfunc()
{
int i = 4;
{
int j = 5;
i = i + j;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,{和}创建了一个新的作用域,因此在{和}之外无法看到j。
Kotlin 支持这个吗?
它不会,因为此语法创建了一个 lambda 表达式(然后它不会被分配给任何东西,也不会被调用)。
所以这段代码对 的初始值没有任何作用i:
var i = 0
{
i++
}
println(i) // 0
Run Code Online (Sandbox Code Playgroud)
但是,您可以将 lambda 分配给变量并调用它:
var i = 0
val f: () -> Int = {
i++
}
f()
println(i) // 1
Run Code Online (Sandbox Code Playgroud)
或者立即以类似 JavaScript 的风格调用它,这可能会被一些人反对:
var i = 0
{
i++
}()
println(i) // 1
Run Code Online (Sandbox Code Playgroud)
添加到@zsmb13 的答案中,您可以查看作用域函数(Standard.kt)。在 Kotlin 中创建作用域的惯用方法是:
var i = 0
run {
i++
}
println(i)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |