模式匹配(Pattern Matching)是一种检查变量是否符合某种模式的语法结构,通过 match
和 case
进行控制
# 按照先后顺序检查模式,只执行第一个匹配的模式下的代码块。
match 变量:
case 模式1:
代码块1
case 模式2:
代码块2
...
case 模式n:
代码块n
graph TD
START([开始]) --> COND1{匹配模式1?} -- 是 --> 代码块1 --> END([结束])
COND1 -- 否 --> COND2{匹配模式2?} -- 是 --> 代码块2 --> END([结束])
COND2 -- 否 --> CONDn{匹配模式n?} -- 是 --> BLOCKn["代码块 n"] --> END([结束])
CONDn -- 否 --> ELSE_BLOCK["代码块 n+1"] --> END([结束])
模式为精确值,变量与模式相等时匹配。例如:
case _:
是 通配符模式,可以匹配任何内容,通常写在最后面,作为其它所有模式都不匹配时的默认操作。
模式为类型,变量符合该类型时匹配。例如:
模式为匹配模式表达式,变量满足表达式时匹配。例如: