when 和 otherwise 连用详解

探索条件逻辑表达中的经典组合

什么是 when 和 otherwise?

whenotherwise 是编程和规则系统中常见的关键词,用于构建多分支条件逻辑。 它们通常成对出现,when 用于定义多个匹配条件,而 otherwise 则作为“默认情况”处理未匹配的情形。

提示:虽然不同语言语法略有差异,但核心思想一致:提供清晰、可读的条件分支结构。

Kotlin 中的 when 表达式(含 else)

在 Kotlin 中,when 替代了传统的 switch 语句。它没有 otherwise 关键字, 而是使用 else 作为默认分支,功能上等同于 otherwise

val score = 85

val grade = when {

    score >= 90 -> "A"

    score >= 80 -> "B"

    score >= 70 -> "C"

    else -> "D" // 相当于 otherwise

}

println(grade) // 输出: B

SQL 中的 CASE WHEN ... ELSE

在 SQL 查询中,CASE WHEN 结构常用于条件判断,其 ELSE 子句即为 otherwise 的体现。

SELECT 

    name,

    CASE 

        WHEN age < 18 THEN '未成年'

        WHEN age BETWEEN 18 AND 60 THEN '成年人'

        ELSE '老年人' -- 相当于 otherwise

    END AS category

FROM users;

规则引擎中的 when/otherwise

在 Drools 等业务规则引擎中,when 定义触发条件,而规则动作中可通过逻辑实现“否则”行为。 虽然不直接使用 otherwise,但可通过互补规则模拟该逻辑。

// Drools DRL 示例(简化)

rule "Check VIP Status"

when

    $c: Customer( totalSpent > 10000 )

then

    $c.setVip(true);

end



rule "Default Non-VIP"

when

    $c: Customer( totalSpent <= 10000 )

then

    $c.setVip(false); // 模拟 otherwise 行为

end

最佳实践建议