Kotlin 控制流
Posted 星火燎原2016
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 控制流相关的知识,希望对你有一定的参考价值。
if 表达式
在 kotlin 中,if 是一个表达式,即他会返回一个值,因此就不需要三元运算符(条件? 然后:否则) .
fun getMax(): Int
var a: Int = 1
var b: Int = 2
return if (a > b) a else b
if 的分支可以是代码块,最后的表达式作为该块的值
fun getMaxCode(a: Int, b: Int): Int
val max = if (a > b)
println("A is max")
11 // 作为返回值
else
println("B is max")
22 // 作为返回值
return max // 最后的返回值 max 取值为 11 或 22
when 表达式
when 取代了 Java 中的 switch 关键字, when 将他的参数与所有的分支条件顺序比较,直到 某个分支满足条件,满足条件的分支后,会自动终止 when 语句的执行,因此,并不需要像 switch 语句的第一个满足条件的分支的后面添加 break.
fun testWhen(x: Int)
when (x)
1 -> // 如果分支中是多条语句,则需要使用
println("x = 1")
println("1111111")
2 -> println("x = 2")
else ->
println("x is neither 1 or 2")
如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用 逗号 分割。
fun testWhen1(x:Int)
when (x)
1,2 -> println("the x is 1 or 2")
else ->
println("x is neither 1 or 2")
也可以检测一个值在 (in) 或不在 (!in) 一个区间或集合中
fun testWhen3(num: Int)
when (num)
in 1..10 -> println("num is in 1..10")
!in 10..20 -> println("num is outside the range")
else -> println("none of above")
for 循环
for 循环可以对任何提供迭代器的对象进行遍历,这相当于 java 中的 foreach 循环。
fun testFor1()
// 声明一个数组
var itemsArray = arrayOf(1, 2, 3, 4, 5)
// 声明一个 list
var itemsList = listOf<String>("apple", "orange")
for (item: Int in itemsArray)
println("the array data : $item")
for(index in itemsArray.indices)
println("the index $index data is $itemsArray[index]")
for (item: String in itemsList)
println("the array data : $item")
While 循环
while 与 do… while 和 Java 中的用法是一样的。
fun testWhile(x: Int)
var num = x
while (num > 0)
num--
println("num = $num ")
fun testDoWhile()
var num: Int = 10;
do
num--
println("num is $num")
while (num > 0)
返回和跳转
kotlin 中有三种结构化跳转表达式
- return : 默认从最直接包围他的函数或匿名函数返回‘
- break : 终止最直接包围他的循环。
- continue : 继续下一次最直接包围他的循环。
在 kotlin 中任何表达式都可以用标签 label 来标记,标签的格式为标识符后跟 @ 符号,
fun testLabel()
loop@ for (i in 1..10) // 使用 loop@ 标记外层循环
for (j in 1..i)
if (i == 9)
break@loop // 跳出外层循环
print("$j * $i = $i * j ")
println()
标签处返回
kotlin 有函数字面量,局部函数和对象表达式,因此 kotlin 的函数可以被嵌套
fun testReturn()
listOf(1, 2, 3, 4, 5).forEach
if (it == 3) return
print("$it ,")
// 1 ,2 ,
// 这个 return 表达式从最直接包围他的函数 testReturn 中返回,如果我们需要从 lambda 表达式中返回,我们必须给他加标签并用 “限制return”
fun testReturn1()
listOf(1, 2, 3, 4, 5).forEach lit@
if (it == 3) return@lit
print("$it ,")
// 1 ,2 ,4 ,5 ,
以上是关于Kotlin 控制流的主要内容,如果未能解决你的问题,请参考以下文章