kotlin(2):控制流
来源:互联网 发布:2016淘宝造物节曲子 编辑:程序博客网 时间:2024/06/06 17:09
控制流
1.if表达式
If可以返回一个值
使用:
val v = if(3>4) 5 else 1
If的分支可以使代码块,最后的表达式作为该块的值,如果使用if作为表达式而不是语句,该表达式需要有else分支
2.when表达式
When取代了switch,不会顺序执行,when将参数和所有的分支条件顺序比较,直到某个分支满足条件,when既可以被当做表达式使用也可以当做语句使用,如果被当做表达式,符号条件的分支的值就是整个表达式的值,如果当做语句使用,则忽略个别分支的值(像if一样,每一个分支可以是一个代码块,它的值是块中最后的表达式的值)
如果其他分支都不满足条件就会求值else分支,如果when作为一个表达式使用,则必须有else分支,除非编译器能够检测出所有的可能情况都已经覆盖了.
如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔
when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("otherwise")}
可以使用任意表达式作为分支条件
when (x) { parseInt(s) -> print("s encodes x") else -> print("s does not encode x")}
也可以检测一个值在in或者不在!in一个区间或者集合中
when (x) { in 1..10 -> print("x is in the range") in validNumbers -> print("x is valid") !in 10..20 -> print("x is outside the range") else -> print("none of the above")}
可以检测一个值是不是is !is一个特定类型的值,由于智能转换,可以访问该类型的方法和属性而无需任何额外的检测
fun hasPrefix(x: Any) = when(x) { is String -> x.startsWith("prefix") else -> false}
When也可以取代if-else if 如果不提供参数,所有的分支条件都是简单的布尔表达式,当顺序执行的一个分支的条件为真的时候就执行该分支
val age = 16when { true -> {print("age == 3")}//执行 并终止 true -> {print("age == 2")} else -> { print("age is neither 3 nor 2") }}
3.for循环
for循环可以对任何提供迭代器(iterator)的对象进行遍历
for(item in collection) print(item)
具有迭代器的对象需要的条件:
A.有一个成员函数或者扩展函数iterator()
B.有一个成员函数或者扩展函数next()
C.有一个成员函数或者扩展函数hasNext() 返回boolean
这三个函数都需要标记为operator
对数组的for循环会被编译为并不创建迭代器的基于索引的循环
for(i in array.indices) { Print(array[i])}
或者可以用库函数withIndex:
for((index,value) in array.withIndex()) { Print(“$index is $value”)}
4.while循环
同java一样
5.跳转
在kotlin中任何表达式都可以用标签来标记,标签的格式为标识符后跟@符号,例如:abc@
a@ for (i in 1..100) { b@ for(j in 1..100) { if(i == 50) break@a } }
Kotlin有函数字面量,局部函数和对象表达式,因此kotlin的函数可以被嵌套,标签限制的return允许我们从外层函数返回,最重要的一个用途就是从lambda表达式中返回
fun foo(){ val arr = arrayOf(1,2,3) arr.forEach{ print(it) if (it == 2) return@forEach//结束的是forEach 会执行print(“end”) } print("end")}
- kotlin(2):控制流
- Kotlin控制流
- Kotlin 控制流
- Android Kotlin入门-控制流
- Kotlin教程学习-控制流
- Kotlin语法基础,控制流
- Kotlin 学习之控制流
- Kotlin for Android(四)Kotlin控制流
- 学习Kotlin笔记记录。--------控制流
- Kotlin语法(四)控制流
- Kotlin控制流、返回与跳转
- Kotlin 官方学习教程之控制流
- Kotlin笔记(四)控制流
- android kotlin基础(三)-控制流
- Kotlin学习之-4.3.3 控制流
- Kotlin语法基础之控制流
- Kotlin基础语法之控制流
- Kotlin学习(6):控制流
- 良/恶性乳腺癌肿瘤预测
- Kotlin 相关的资料
- XCODE性能测试方法
- angular中scope的用法
- 静态链表
- kotlin(2):控制流
- spring_HibernateTemplate(Hibernate模板)_模版设计模式
- atom配置vim
- Mac-----Mac端口映射
- Python基础-__main__
- mysql中DATE_FORMAT()和str_to_date()简介
- 分治法求最值
- leetcode :expected unqualified-id before string constant
- JAVA中的糕富帅技术