Kotlin流程控制

以前学JAVA的时候知道,程序的执行语句主要分3种:顺序、条件和循环。

if

Kotlin中的if和JAVA中几乎没有区别,唯一的区别就是Kotlin中if代码块的最后一行是if整个代码块的返回值,比如:

 private fun testMethod(num1: Int, num2: Int): Int {
        return if (num1 > num2) {
            num1
        } else {
            num2
        }
    }

那么你打日志的话就可以看到testMethod方法的返回值是num1和num2中最大的那个。
配合Kotlin的语法糖,当一个函数的方法体只有一行代码的时候,可以省略方法体,直接用等号连接这一行函数,虽然这个if代码块看起来不是一行,但是它的作用和一行代码是相同的,所以这个函数可以写成这样:

private fun testMethod(num1: Int, num2: Int): Int = if (num1 > num2) {
        num1
    } else {
        num2
    }

再配上Kotlin的类型推导机制,最终简化版是这样:

private fun testMethod(num1: Int, num2: Int) = if (num1 > num2) num1 else num2

学到这里我觉得Kotlin有一种为了语法糖而语法糖的感觉,哈哈,别喷我,菜鸡的理解。

when

当年在学JAVA的时候,经常遇到在switch语句中忘了写break造成的一些BUG,查到天荒地老也查不出来,而且switch只能以整型或短于整型的变量作为条件,JDK1.7之后加了对字符串变量的支持。

Kotlin解决了JAVA中switch的痛点,而且提供了更加强大的特性,在写代码过程中,如果你写的if else特别多的地方,就应该考虑使用when了,比如我们做一个根据姓名返回成绩的函数:

private fun testMethod(name: String) = when (name) {
        "Koma" -> 95
        "Chan" -> 100
        else -> 0
    }

可以看出来when也是有返回值的,所以这里可以用单行函数的语法糖

for

Kotlin在for循环方便做了很大的修改,JAVA中的for-i在Kotlin中直接被废弃了,而for-each则被Kotlin加强了,变成了for-in循环:

for(i in 0..10){
   LogUtils.d(i)
}

0…10 代表创建一个从0到10的区间数组,并且两端都是闭区间,如果想创建一个左闭右开的区间的话,把…换成until就可以了:

for(i in 0..10){
   LogUtils.d(i)
}

在这里插入图片描述
不过until关键字要求左端必须小于等于右端,默认情况下,每次进入到循环都会+1,如果你想跳过其中一些元素的话,可以用step

for (i in 0 until 10 step 2) {
   LogUtils.d(i)
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值