# 条件语句 ## 功能 条件语句用于根据不同条件执行不同代码。BT 中 `if` 也是表达式:整个 `if` 的值由实际执行分支中最后一条语句返回;没有匹配分支时返回 `empty`。 ## 语法 ```bt if condition { value_when_true } elseif other_condition { value_when_other } else { value_when_false } ``` ## if `if` 后面写条件。条件为真时执行第一个代码块。 ```bt score = 72 level = if score >= 60 { 'pass' } ``` ## else `else` 表示前面的条件都不成立时执行的兜底分支。 ```bt result = if score >= 60 { 'pass' } else { 'fail' } ``` ## elseif 和 else if `elseif` 用于连续判断多个条件;`else if` 也可以写成嵌套条件。 ```bt grade = if score >= 90 { 'A' } elseif score >= 80 { 'B' } else { 'C' } ``` ## 三元条件表达式 简单二选一可以用 `condition ? true_value : false_value`,适合短表达式,不适合写复杂业务块。 ```bt name = user_name ? user_name : '游客' ``` ## match 表达式 ## 功能 `match` 用于按顺序比较一个表达式的值,并返回第一个命中分支的结果。它适合替代连续的 `if / elseif / else` 判断。 ## 语法 ```bt match expr { pattern => expr, pattern => { statement expr }, pattern => expr, _ => expr } ``` ## 参数 - `expr`:要匹配的表达式,只会先求值一次。 - `pattern`:分支模式表达式,按从上到下的顺序与目标值进行相等比较。 - `_`:默认分支,当前面都不匹配时返回它的表达式值。 ## 返回值 `match` 是表达式,命中分支后返回该分支 `=>` 右侧表达式的值;分支右侧写 `{}` 代码块时返回代码块最后一条语句的值;没有匹配且没有 `_` 默认分支时返回 `empty`。 ## 代码示例 ```bt x = 1 result = match x + 1 { 2 => 'a', 3 => 'b', _ => 'c' } // 输出:a print result ``` ```bt x = 1 result = match x + 1 { 2 => { if x == 1 { 'ok' } else { 'no' } }, _ => 'c' } // 输出:ok print result ``` ## 注意事项 - `match` 按分支书写顺序匹配,命中后不会继续检查后续分支。 - `_` 是默认分支,通常放在最后;如果放在前面,后续分支不会再被执行。 - 分支右侧可以是表达式,也可以是 `{}` 代码块;代码块的值由最后一条语句决定。 - `return` 会直接退出当前函数或脚本,不只是返回当前 match 分支;如果只是想把值交给 `match`,请把该值作为代码块最后一条语句。 ## 真值规则 条件会按 BT 的真值规则判断。常见的假值包括 `false`、`null`、`empty`、`0`、空字符串、空数组和空对象;其他值通常按真处理。