直接回答:传统 switch 只能做"值是否相等"的分支判断;模式匹配(Python 3.10 的 match/case、Java 的 pattern matching)能按数据的结构和形状匹配,同时完成类型判断、解构和变量绑定,还能附加守卫条件。switch 可视为模式匹配能力的一个子集。

示例(Python 3.10+):

match point:
    case (0, 0):
        print("原点")
    case (0, y):
        print(f"Y 轴, y={y}")      # 解构并绑定 y
    case (x, y) if x == y:         # 守卫条件
        print("在对角线上")
    case Point(x=0):               # 按类属性匹配
        print("类实例匹配")
    case _:
        print("其他")

展开解析:关键区别——

  1. switch 的 case 是常量比较,模式匹配的 case 是"模式":可以是字面量、序列、映射、类实例、通配符;
  2. 匹配成功的同时自动绑定子组件到变量,省去手动取值和强制转换(Java 的 instanceof 模式匹配同理);
  3. 支持 if 守卫,把额外条件并入分支选择;
  4. 配合密封类型(sealed)时编译器可做穷尽性检查。

易错点:Python 的 case SOME_CONST 中裸名字会被当作"绑定变量"而非值比较,引用常量需用点号(如 case Color.RED)。