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

Kotlin中的双管道||运算符作用是什么?相关代码逻辑疑问求解

代码逻辑解析

这是利用了Kotlin中逻辑或运算符||的短路特性实现的前置校验逻辑,运行规则如下:

  • Kotlin的||是短路运算符:只有左侧表达式返回false时,才会执行右侧的表达式;如果左侧返回true,会直接跳过右侧逻辑继续执行后续代码
  • 你给出的这行校验代码:
!screens.containsKey(type) || throw GdxRuntimeException("Screen already registered to type: $type.")

拆解执行逻辑:

  1. 首先判断!screens.containsKey(type):即校验当前要注册的type是否还没有被添加到screens集合中
  2. 如果判断结果为true:说明不存在重复注册,||直接短路,不会执行后面的抛异常逻辑,方法继续往下执行screens.put操作
  3. 如果判断结果为false:说明该type已经注册过了,此时会执行||右侧的抛异常代码,直接终止当前方法的执行,不会走到后续的put逻辑

这种写法本质是「卫语句」的简化写法,和下面的常规条件判断逻辑完全等价:

open fun <Type : ScreenType> addScreen(type: Class<Type>, screen: Type) {
    // 等价的常规写法
    if (screens.containsKey(type)) {
        throw GdxRuntimeException("Screen already registered to type: $type.")
    }
    screens.put(type, screen)
}

这种简写在Kotlin库代码中非常常见,可以在不损失可读性的前提下让代码更紧凑。

内容的提问来源于stack exchange,提问作者Dj Sushi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 13:15:07