在学习Rust语言的时候,看到一个很有意思的语法:
fn main(){
let mut counter = 0;
let result = loop{
counter += 1;
if counter == 10 {
break counter * 2;
}
};
print!("The result is: {}",result);
}
其中let result = loop { ... }
和break counter * 2;
这个语法很有意思。通过循环算出来的一个值赋给了一个变量,个人感觉这种写法非常优雅。
那么在Kotlin中有没有类似的优雅的实现方法呢?当然是有的,它就是作用域函数run。例子如下:
fun main() {
val result = run {
var counter = 0
while (true) {
counter++
if (counter == 10) {
return@run counter * 2
}
}
}
println("The result is : $result")
}
Kotlin中的val result = run { ... }
和return@run counter * 2
有异曲同工之妙。计算result
用到的临时变量并没有在与result
同级的作用域中出现。Kotlin的语法也非常优雅。