【Kotlin】初识Kotlin之流程与函数

【Kotlin】初识Kotlin(二)

1、Kotlin的流程控制

流程控制是一门语言中最重要的部分之一,从最经典的if…else…,到之后的switch,再到循环控制的for循环和while循环,都是在开发中离不开的。

之前在第一篇博文中提到了Kotlin中的for循环和foreach循环,从中可以看出Kotlin在这些流程处理中下了很大一片功夫,也进行了人性化的创新。

接下来我们就从最经典的if … else …来讲起!

1. if表达式

说起if,我们已经非常熟悉了。也许它的执行效率却在某些情况下不是最高的,但是它的实用性绝对是最高的!

最传统的用法咱们不讲,咱们讲讲Kotlin中if创新的用法:

  • if表达式当作三元运算符
  • if块
(1) 代替三元运算符

Kotlin在操作符中,没有三元操作符case ? A : B,但是我们仍然有替代方案,那就是Kotlin中的if (case) A else B。在缺少三元操作符这一块上,Kotlin使用类似了python的方法,使用if ... else ...来代替!

fun main() {
   
    val flag = 1 == 2
    println(if (flag) "true" else "false")
}

反正只要是三元运算符可以做的,if表达式可以做到!

(2) if块

块,就是代码块,也就是说if后面可以带上代码块,这是Java所做不到的

我们举一个例子

fun main() {
   
    val a = -114
    val b = -1919

    val max = if (a > b) {
   
        println("$a is larger than $b.")
        println("max variable holds value of a.")
        a
    } else {
   
        println("$b is larger than $a.")
        println("max variable holds value of b.")
        b
    }
    println("max = $max")
}
/*
    -114 is larger than -1919.
    max variable holds value of a.
    max = -114

    进程已结束,退出代码0
*/

我们发现,{}内中的内容我们也执行了。注意的一点是,代码块中最后一行是返回值,这也是lambda的特性之一!

这里不得不提一句,每次在Java中写三元运算符的时候,总想写一些骚操作,比如在三元运算符的时候执行方法,但是偏篇不行,非得写成4行的if…else…,但是在Kotlin中,方法、代码块都能在if … else …中实行了,实在是太方便了!

上述的代码可以转换成这样的:

fun main() {
   
    val a = -114
    val b = -1919

    val max = if (a > b) shutA(a,b) else shutB(a,b)
    println("max = $max")
}

fun shutA(a: Int, b: Int): Int {
   
    println("$a is larger than $b.")
    println("max variable holds value of a.")
    return a
}

fun shutB(a: Int, b: Int): Int {
   
    println("$b is larger than $a.")
    println("max variable holds value of b.")
    return b
}

同样的,if块也可以使用if … else if … else …的方式

2. when表达式

这个可是Kotlin独有的表达式,可以说是switch的增强版,非常的实用!

在上一篇博文讲解for循环的例子中,我们就简单的使用了when表达式,现在我们来具体分析一下

我们举一个简单的when表达式的例子:

fun main() {
   
    println("输入符号")

    val result = when (val operator = readLine()) {
   
        "+" -> 0
        "-" -> 1
        "*" -> 2
        "/" -> 3
        else -> -1
    }

    println("selected index = $result")
}

我们使用when来进行选择,()内是选择的一个对象,这里选择的是我们在控制台写入的一行字符串

对应我们在控制台写入的不同的情况,会给reslut变量赋不同的值

再看一种不用when赋值的情况

fun main() {
   
    val a = 12
    val b = 5

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值