Kotlin学习笔记2-4 基础-返回和跳出
来源:互联网 发布:e商盟软件 编辑:程序博客网 时间:2024/05/18 00:56
返回和跳出
Kotlin官网:Basics-Returns and Jumps
Kotlin支持3种跳出语句
1. return:默认从最近的外围函数或匿名函数返回值
2. break:中断最近的循环
3. continue:跳到最近的循环的下一步
这3种跳出语句和Java的定义类似,不同的是Kotlin的这三种跳出语句还可以写在其他语句中:
val s = person.name ?: return
此时return返回Nothing类(类似于Java中的null或者Void)
中断、继续标签
Kotlin中支持为任意表达式起名,格式为”标签名@”,用法和Java类似,写在要起名的表达式之前即可
loop@ for (i in 1..100) { for (j in 1..100) { if (...) break@loop }}
此时就可以使用标签在指定中断或继续的循环了。
返回标签
Kotlin中的return返回的是最近的外围函数或者匿名函数,在lambda中使用return时,return的是最近的外围函数,例如:
fun foo() { ints.forEach { if (it == 0) return // nonlocal return from inside lambda directly to the caller of foo() print(it) }}
此时return返回的是foo函数,如果想返回forEach的lambda表达式,可以使用标签:
fun foo() { ints.forEach lit@ { if (it == 0) return@lit print(it) }}
此时return返回的就是forEach了。Kotlin为每个lambda都生成有默认的label,名字和方法名相同,使用更方便:
fun foo() { ints.forEach { if (it == 0) return@forEach print(it) }}
当使用匿名函数取代lambda时,return返回的是匿名函数自身,而不是外围函数:
fun foo() { ints.forEach(fun(value: Int) { if (value == 0) return // 此时返回的是forEach匿名函数 print(value) })}
当返回标签有返回值时:
return@a 1
意为在lable a处返回1,而不是返回”@a 1”
阅读全文