Kotlin 从学习到 Android 第五章 返回和跳转
来源:互联网 发布:路由器网络延迟不稳定 编辑:程序博客网 时间:2024/06/16 02:23
在 Kotlin 中,有三种返回和跳转语句:
- return 从最近的一个封闭函数或匿名函数中返回;
- break 跳出最近的封闭循环;
- continue 继续执行最近封闭循环的下一步;
上面这三个表达式也能够作为其他表达式的一部分:
val s = person.name ?: return
break 和 continue 标签
在 Kotlin 中任何表达式都可以使用标签,标签的格式为:标签名@,例如,abc@ 、m@ 等。使用标签时,我们只需把标签放在表达式前面即可,一般和表达式有一个空格的距离:
// 再 i = 10 时跳出整个循环loop@ for (i in 1..100) { for (j in 1..10) { if (i == 10) break@loop else println("$i : $j") }}
使用标签的 return
一般情况下,Kotlin 中的 return 和 java 中的 return 效果一样,都是结束最近的封闭函数:
var ints = arrayListOf<Int>(0 ,1 ,2, 3)fun foo() {// 并不会打印出任何值 ints.forEach { if (it == 0) return print(it) }}
但是,当 return 后面跟上标签时,表示符合判断条件后终止标签所标记的表达式,类似于 break 的作用:
var ints = arrayListOf<Int>(0 ,1 ,2, 3)fun foo() { ints.forEach lit@ { if (it == 0) return@lit print(it) }}
lit@ 是后面表达式的标签,当 it == 0 时,终止表达式 {…} ,ints.forEach 继续执行,所以打印结果是 123
然而,更多情况下我们使用匿名标签,其标签名和 lambda 表达式中函数的名称一样:
fun foo() { ints.forEach { if (it == 0) return@forEach print(it) }}
或者,我们也可以使用一个匿名函数来代替 lambda 表达式,这样这个 return 的作用就是终止当前的匿名函数:
fun foo() { ints.forEach(fun(value: Int) { if (value == 0) return print(value) })}
当需要返回值时,我们可以这么写:
return@a 1
这句话的意思是:表达式 @a 的返回结果是 1 ,而不是返回一个有标记的表达式 (@a 1)。
阅读全文
0 0
- Kotlin 从学习到 Android 第五章 返回和跳转
- 【Kotlin从入门到深坑】之返回和跳转
- Kotlin 从学习到 Android 第六章 类和继承
- Kotlin 从学习到 Android 第七章 属性和字段
- Kotlin学习(7):返回和跳转
- android kotlin基础(四)-返回和跳转
- Kotlin-1.4-返回和跳转
- Kotlin 从学习到 Android 第十一章 枚举类、嵌套类 和 密封类
- Kotlin 从学习到 Android 第二章 习惯用法
- Kotlin 从学习到 Android 第三章 编码规范
- Kotlin 从学习到 Android 第四章 控制流
- Kotlin 从学习到 Android 第八章 接口
- Kotlin 从学习到 Android 第十章 扩展
- Kotlin 从学习到 Android 第十三章 对象
- Kotlin 官方学习教程之返回和跳转
- Kotlin 学习之返回与跳转
- Kotlin语法(五)-返回和跳转
- Kotlin基础教程-返回值和跳转
- redis 配置文件 redis.conf解读
- C语言数据结构——二叉链表
- 滚动哈希(Rabin-Karp算法)
- linux命令sort详解
- 初窥Intent
- Kotlin 从学习到 Android 第五章 返回和跳转
- 回溯法--矩阵中的路径问题(java)
- myeclipse中的web项目导入到eclipse中出现的问题及解决办法
- CQU TaoSama与煎饼 (dp)
- 关于Eclipse启动报错,jvm版本不匹配的问题
- sql自关联查询
- 美
- 关于HTML兼容性
- 在线云评测系统日志五