kotlin if else记录

本文探讨了Kotlin代码中let代码块如何影响if-else语句的执行,特别关注了`printIt`函数的修改后的运行结果,揭示了let对字符串处理的隐含行为。通过实例和解析,解释了let在看似不符合预期情况下仍能打印的原因。
摘要由CSDN通过智能技术生成
fun printIt(num: Int) {
    if (num < 0) {
        print("负")
    } else if (num > 0) {
        print("正")
    } else {
        print("0")
    }
}

fun main() {
    printIt(-1)
    print(",")
    printIt(1)
    print(",")
    printIt(0)
}

大家可以猜一下打印结果。
在这里插入图片描述
没错,答案就是A.
好吧,接下来把代码稍作改动:

fun printIt(num: Int) {
    if (num < 0) {
        "负"
    } else if (num > 0) {
        "正"
    } else {
        "0"
    }.let { print(it) }
}
fun main() {
    printIt(-1)
    print(",")
    printIt(1)
    print(",")
    printIt(0)
}

仔细对比两道题目,我猜一下大家的内心独白。

  1. 这题肯定不选A了
  2. 不选A,答案又是哪个呢
  3. 给立在搞啥玩意儿,还选A吧

对于kotlin代码,若遇不快,首先反编译。看看java代码长什么样子。
在这里插入图片描述
厉害了,负 的确凭空消失了。
再回头对比一下两次的代码,如下图:
在这里插入图片描述
左边的代码在条件判断分支中执行打印语句,符合我们想象中的执行逻辑,这没有问题。

讨论为啥右边的代码打印结果为啥会这样?









总结:
右边的代码在 let 代码块中执行打印语句,虽然不符合我们想象中的执行逻辑,但是它仍然打印了 ,正,0 。说明这个 let 成功作用在了一个 String 对象上,间接说明了 Kotlin 的 if/else 是有返回值的。
盯着let确实很难理解,可以理解kotlin对于else if的支持,就是转化为
if(){}
else
{
if(){}else{}
}
这么看就容易理解了。
以后多加小心kotlin的else if.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值