kotlin Control Flow

kotlin流程控制语句,官网:https://kotlinlang.org/docs/reference/control-flow.html

Control Flow: if, when, for, while

kotlin中的流程语句主要有四个 if when  for while,现在一个个来.

If Expression

In Kotlin, if is an expression, i.e. it returns a value. Therefore there is no ternary operator (condition ? then : else), because ordinary if works fine in this role

在Kotlin中,如果是表达式,即返回一个值。 因此,没有三元运算符(条件?then:else),因为普通if在此角色下工作正常

//传统写法
fun main(){
    var a:Int  = 3;
    var b:Int = 4;
    if(a>b){
        print("a大于b")
    }else{
        print("a小于b")
    }
}

上面是传统写法,其实还有更简单的写法,使用表达式的方式

//表达式
fun main(){
    var a:Int  = 3;
    var b:Int = 4;
    val max = if (a > b) a else b
    print("max-->"+max);
}

如果if或者else里面下的逻辑代码特别多,那使用这个就行不通了,那还是要和Java中的if...else一样

如果分支可以是块,并且最后一个表达式是块的值,这点就比Java强很多了

//表达式
fun main(){
    var a:Int  = 3;
    var b:Int = 4;
    val max = if (a > b) {
        print("Choose a")
        a
    } else {
        print("Choose b")
        b
    }
    print(max)
}

 if或者else语句的最后一句是表达式中的值,那么这个时候if表达式的返回值就是这个值了,

When Expression

when语句就好比Java中的switch,但是比switch强很多

fun main(args:Array<String>){
    var x:Int=1
    when (x) {
        1 -> print("x == 1")
        2 -> print("x == 2")
        else -> { // Note the block
            print("x is neither 1 nor 2")
        }
    }
}

when依次将其参数与所有分支匹配,直到满足某些分支条件。 when可以用作表达式或语句。 如果将其用作表达式,则满足的分支的值将成为整个表达式的值。 如果将其用作语句,则忽略各个分支的值。 (与if一样,每个分支可以是一个块,其值是该块中最后一个表达式的值。)

如果其他分支条件都不满足,则评估else分支。 如果将when用作表达式,则else分支是必需的,除非编译器可以证明所有可能的情况都被分支条件覆盖(例如,枚举类条目和密封类子类型)

如果许多情况下应以相同的方式处理,则分支条件可以用逗号组合,比如

when (x) {
    0, 1 -> print("x == 0 or x == 1")
    else -> print("otherwise")
}

上面0和1处理方式是一样的,则可以放在一块处理.

我们可以使用任意表达式(不仅是常量)作为分支条件

when (x) {
    parseInt(s) -> print("s encodes x")
    else -> print("s does not encode x")
}

相当于Java中的case中不一定是常量 在kotlin中表达式也可以作为case的条件

我们还可以检查范围或集合中处于或!

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")
}

在kotlin中用于在某个范围可以使用..比如1到100 可以写成这样 1..100 代码表示

var i = 1..100

For Loops

for (item in collection) print(item)

在kotlin中for表达式要比Java中书写更容易, 跟groovy语法比较像 在kotlin中for循环的写法

for (item: Int in ints) {
    // ...
}

简单的例子:

fun main(args:Array<String>){
    val list = listOf<Int>(1,2, 3,4)
    for(item:Int in list){
        println("item-->"+item)
    }
}

for循环不一定一定要使用集合或者数组,也可以使用范围,这点在Java中是没有这个语法的

fun main(args: Array<String>){
    for (i in 1..3) {
        println(i)
    }
}

for循环在有些需求我们要求是倒序 那么在kotlin中怎么写呢? kotlin中提高了downTo

fun main(args:Array<String>){
    for (i in 6 downTo 5) {
        println(i)
    }
}

downTo后面的数字表示倒序到那 上面是5表示从6到5 就二个数字

downTo后面的数字不能大于前面的数字

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值