Kotlin学习(6):控制流

1、If表达式

在Kotlin中,if是一个表达式,即它会返回一个值。因此就不需要三元运算符(条件?然后:否则),因为普通的if就能胜任这个角色。

  • 传统用法
var max = a
if (a > b) max = a
  • 作为表达式
val max = if (a > b) a else b
  • 分支为代码块

if的分支可以是代码块,最后的表达式作为该块的值:

val max2 = if (a > b) {
    print("choose a")
    a
} else {
    print("choose b")
    b
}

注:如果使用if作为表达式而不是语句,那么该表达式需要有else分支。

2、When表达式

when取代了类C语言的switch操作符。其最简单的形式如下:

when (x) {
        1 -> println("x == 1")
        2 -> println("x == 2")
        else -> {
            println("x is neither 1 nor 2")
        }
    }

when将它的参数和所有的分支条件顺序比较,知道某个分支满足条件。when既可以被当作表达式使用,也可以被当作语句使用。 如果它被当作表达式,符合条件的分支的值就是整个表达式的值,如果当作语句使用,则忽略个别分支的值。

如果其他分支都不满足条件将会求值else分支。如果when作为一个表达式使用,则必须有else分支,除非编译器能够检测出所有的可能情况都已经覆盖了。

  • 相同处理方式

如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔:

when (x) {
    0, 1 -> print("x == 0 or x == 1")
    else -> print("otherwise")
}
  • 表达式作为分支
when (x) {
    parseInt(x) -> print("s encodes x")
    else -> print("s does not encode")
}
  • 检测一个值是否在某区间

我们可以检测一个值在(in)或者不在(!in)一个区间或集合中:

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")
}
  • 检测是否为某种类型的值

检测一个值是(is)或者不是(!is)一个特定类型的值。

fun hasPrefix(x: Any) = when (x) {
    is String -> x.startsWith("prefix")
    else -> false
}
3、For循环

for循环可以对任何提供迭代器(iterator)的对象进行遍历,这相当于像C#这样的语言中的foreach循环。语法如下:

  • 传统用法
val items = listOf(1, 2, 3, 4)
    for (item in items) {
        println(item)
    }
  • 基于索引
 for (index in items.indices) {
        print(items[index])
    }
  • withIndex
for ((index, value) in items.withIndex()) {
    println("the element at $index is $value")
}
4、While循环

while循环主要有whiledo..while两种,和Java中使用方法相同。

  • while
fun put(x: Int): Int {
    var x1 = x
    while (x1 > 0) {
        x1--
    }
    return x1
}
  • do..while
fun con(x: Int):Int{
    var x1 = x
    do {
        x1--
    } while (x1 > 0)
    return x1
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值