You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将这段Kotlin代码改写为更简洁的惯用写法?

简化Kotlin中重复返回逻辑的方案

嘿,你这个合并重复返回逻辑的思路太对了!咱们可以用Kotlin的语法特性把这段代码变得更简洁优雅,完全消除冗余的centerX()调用。

方案一:链式调用+Elvis操作符(最简洁)

直接用安全调用、takeIf和Elvis操作符把逻辑压缩到一行:

private fun getTouchX(): Int {
    return arguments?.takeIf { it.containsKey(KEY_DOWN_X) }?.getInt(KEY_DOWN_X) ?: centerX()
}

这段代码的逻辑是:

  • 如果arguments不为空,并且包含KEY_DOWN_X这个key,就取出对应的值
  • 只要上面任一条件不满足,就直接返回centerX(),完美覆盖了原代码的所有场景,还没有重复逻辑。

方案二:合并条件的if表达式(更直观)

如果你觉得链式调用不够直观,也可以把两个判断条件合并成一个if分支:

private fun getTouchX(): Int {
    return if (arguments == null || !arguments.containsKey(KEY_DOWN_X)) {
        centerX()
    } else {
        arguments.getInt(KEY_DOWN_X)
    }
}

这个版本和你最初的改写思路一致,把原本分散的两个返回centerX()的场景合并到同一个条件里,逻辑清晰易懂。

小提醒:你原代码里最后一行的argument...应该是arguments.getInt(KEY_DOWN_X),注意别漏了复数的s哦~

内容的提问来源于stack exchange,提问作者Bansook Nam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:06:58