Kotlin——程序的基本逻辑结构之选择、循环和跳转基本语法
2017-08-18 16:05
585 查看
引言
前一篇文章总结了Kotlin的基本数据类型,如果把程序比作一个有机体的话,基本数据只是构成一个躯壳,而没有灵魂的躯壳是意义不大的。同样的如果程序中没有控制逻辑很多情况下这程序是不完整的,因为不可能每一句代码之间都是从上往下逐句去执行,而程序中的灵魂就是我们的要讲的控制逻辑。一、条件选择结构
Kotlin中条件选择结构主要有两种:if-else if -else 和when。1、if-else if -else
在Kotlin中if-else if -else条件从句除了拥有Java 中if条件从句的所有功能,用法也大同小异,还有更高级的功能(类似Java中的三元运算符—— 条件 ? 条件值满足时返回的值 : 不满足时返回的值)。在Kotlin中if 是一个表达式,也就意味着他会返回值,且if的分支是还可以是代码块。最后需要注意:如果你使⽤ if 作为表达式⽽不是语句,该表达式必须有 else 分⽀配对。传统用法
if(conditionexp){ ... }else if(conditionexp2){ ... }else{ ... }
作为表达式使用,实现三元运算符功能
var a=9 var b=80 val max = if (a > b) a else b println("max"+max)//输出 max 80
作为表达式使用,分支使用代码块
var a=9 var b=80 val max = if (a > b) { print("Choose a") a } else { print("Choose b") b } println("max"+max)//输出Choose bmax80
2、when 条件从句
when -else条件从句就相当于升级版的switch-case从句,运行逻辑大同小异。when 也将它的参数(也可以不提供参数)和各分⽀条件顺序⽐较,直到某个分⽀满⾜条件。和if 类似,when的分支条件可以是任意表达式(不只只是常量),不过需要注意的是,。如果when被用做表达式(必须有 else 分⽀), 符合条件的分⽀的值就是整个表达式的值;如果当做语句使⽤, 则忽略个别分⽀的值。(像 if ⼀样,每⼀个分⽀可以是⼀个代码块,它的值是块中最后的表达式的值),最后,如果其他分⽀都不满⾜条件将会求值 else 分⽀。普通用法
when (x) { 1 -> print("x == 1") 2 -> print("x == 2") 3,4 ->print("x == 3 /4") else -> { // 注意这个块 ... } } }
使用表达式作为分支条件
when (x) { parseInt(s) -> print("s encodes x") else -> print("s does not encode x") }
使用when实现检测某个值是否在某个区间
val x:Int=8 when (x) { in 1..10 -> print("x is in the range") !in 10..20 -> print("x is outside the range") else -> print("none of the above") }
when不提供参数(相当于if-else if-else功能),所有的分⽀条件都是简单的布尔表达式,⽽当⼀个分⽀的条件为真时则执⾏该分⽀
val x:Int=8 when { x>9 -> print("x >9 ") x<9 -> print("x > 9") else -> print("x is funny") }
二、循环
在Kotlin中循环结构和Java功能一模一样,也拥有三种形式:for、while(condition)、do-while,用法也是一样的,也没有啥特别的。for 可以循环遍历任何提供了迭代器的对象,迭代之后可以通过成员函数或者扩展函数 iterator() 获取它的返回类型,也可以通过成员函数或者扩展函数 next() 获取下一个值还可以通过并且成员函数或者扩展函数 hasNext() 判断是否遍历到尽头。
for (item in collection) print(item)
for循环集合的索引遍历(这种“通过一个范围的迭代”形式在编译的时候会被优化而不会创建额外的对象。)
for (i in array.indices) { print(array[i]) }
使用withIndex完成遍历(形式在编译的时候会被优化而不会创建额外的对象。)
val asc = Array(5, { i -> (i * i).toString() }) //index,value为关键字 for ((index, value) in asc.withIndex()) { println("the element at $index is $value") }
while和do-while
while (x > 0) { x-- } do { val y = retrieveData() } while (y != null) // y 在此处可⻅
三、跳转结构continue、break和return
continue、break、return结构功能用法和Java中的一样。return——默认从最直接包围它的函数或者匿名函数返回。
break——终⽌当前层次的循环。
continue——跳出当前当次的循环,继续下⼀次循环
四、标签Label
在Kotlin中任何表达式都可以⽤标签(Label)来标记,使用标识符后跟@符号来定义一个标签(即xxx@,例如:abc@ 、fooBar@ 都是有效的标签),使用@后跟标识符来引用一个标签(@xxx)。其实呢标签就有点类似goto语句的作用,有点像通过外力来改变程序默认的逻辑而运行到定义标签处。一般来说,标签通常是用于限制continue、break、return的调整,关于标签的更多使用后续再详解。
相关文章推荐
- 程序设计基本结构——顺序、选择与循环
- Linux C---程序设计基本结构——顺序、选择与循环
- java学习之路 之 基本语法-程序流程控制-循环结构-for 循环练习题
- java学习之路 之 基本语法-程序流程控制-循环结构-嵌套循环练习题
- 程序设计基本结构----顺序、选择与循环
- 程序设计基本结构(顺序、选择、循环)
- java学习之路 之 基本语法-程序流程控制-循环结构-while循环练习题
- 程序设计基本结构———顺序、选择与循环
- 要点之第4章逻辑运算与选择结构程序
- Chapter 3、Java语法基础(一)---- Java程序基本结构 (19th,Feb)
- C#笔记(3)---基本语法[程序结构]
- Python学习之五【程序控制结构-选择结构&&循环结构】
- C#笔记(3)---基本语法[程序结构]
- Java基础语法(一)---数据、数值类型、运算符、程序流程控制语句和循环结构
- 2_C程序结构和基本语法
- Kotlin——程序的灵魂组成之Lambda表达式、匿名函数、高阶函数的基本语法(二)
- java重修之路(四)程序流程控制:判断,选择,循环结构,函数
- C语言_04 三种程序结构 顺序, 选择(分支), 循环结构
- (7)javascript的程序控制结构及语句------(2)循环控制语句、跳转语句、对话框